0

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

我创建了一个 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 服务器上用同一个 slave 构建了他的项目,但是他正在使用带有 build.xml 的 Ant 项目,它工作得很好。

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

谢谢!

彼得

4

2 回答 2

0

我找到了答案。

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

SOFTWARE\Cygnus Solutions\Cygwin\ string rootdir 针对 cygwin64。

这很奇怪,因为在我的 Jenkins 中,我使用 cygpath 1.5,它应该找到位于注册表路径 SOFTWARE\Cygwin\setup 下的 Cygwin 安装的正确路径。

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

我希望有人觉得这有帮助!彼得

于 2015-04-17T14:44:39.043 回答
0

我查看了引发异常的文件的源代码,发现它需要密钥中的字符串

' HKLM/SOFTWARE/Wow6432Node/Cygwin/setup '

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

编辑:我最终创建了密钥“设置”,因为它不存在。

于 2015-08-20T21:13:17.027 回答