使用 Jenkins 和 Windows slave 进行 Cygpath 故障排除

Cygpath troubleshooting with Jenkins and Windows slave

我有一台安装了 Cygwin 1.7.35 的远程 Windows 计算机,我们将其用作 CI 使用 Jenkins 进行测试的从属计算机。

我创建了一个 Jenkins 作业来构建 Maven 项目(从存储库克隆之后)。

Jenkins 包含 Cygpath 1.5 插件,Cygwin 的注册表路径是 SOFTWARE/Cygwin/Setup

我使用 PreStep 从存储库克隆项目:

source ~/.profile > /dev/null
cd /cygdrive/c
rm -rf .$WORKSPACE/project-name
hg clone something something

存储库克隆工作正常。 构建失败,我在控制台输出中收到此错误:

ERROR: Failed to parse POMs
    hudson.util.IOException2: Failed to locate Cygwin installation. Is Cygwin installed?    
    at hudson.plugins.cygpath.CygpathLauncherDecorator$GetCygpathTask.getCygwinRoot(CygpathLauncherDecorator.java:138)
    etc...

我尝试将 Path 变量从 C:\cygwin64\bin 重写为 C:/cygwin64/bin 并返回。 我先在 Cygwin 1.7.32 上试过,然后又在 1.7.35 上试过。 我尝试将注册表项中的路径从 C:\Cygwin64 更改为 C:Cygwin64\bin 并返回。 没有任何效果。

我的同事在同一个 Jenkins 服务器上使用同一个从站构建他的项目,但他使用的是一个带有 build.xml 的 Ant 项目并且它工作得很好。

请问您对如何解决这个问题有什么建议吗?

谢谢!

彼得

我找到了答案。

我在

下创建了一个新的注册表项

SOFTWARE\CygnusSolutions\Cygwin\ string rootdir 针对 cygwin64.

这很奇怪,因为在我的 Jenkins 中我使用的是 cygpath 1.5,它应该在注册表路径 SOFTWARE\Cygwin\setup.

下找到正确的 Cygwin 安装路径

我还必须更改 Jenkins 从机配置,因为从机 Java SDK 版本与全局 Jenkins 设置中的 Java SDK 版本不同。

希望对您有所帮助! 彼得

我查看了引发异常的文件的源代码,发现它需要来自键

的字符串

'HKLM/SOFTWARE/Wow6432Node/Cygwin/setup'

名为“rootdir”,其中包含您的 Cygwin 安装的绝对路径。

编辑:我最终创建了密钥 'setup',因为它不存在。