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

时间:2015-04-14 15:14:25

标签: windows maven jenkins cygwin cygpath

我有一台安装了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项目,它工作得很好。

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

谢谢!

彼得

2 个答案:

答案 0 :(得分:0)

我找到了答案。

我在

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

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

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

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

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

答案 1 :(得分:0)

我查看了抛出异常的文件的源代码,发现它想要一个来自密钥的字符串

“的 HKLM /软件/ Wow6432Node / Cygwin的/设置

命名为“ rootdir ”,它具有Cygwin安装的绝对路径。

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