我有一台安装了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项目,它工作得很好。
请问,您对如何解决这个问题有任何建议吗?
谢谢!
彼得
答案 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安装的绝对路径。
编辑:我最终创建了“设置”键,因为它不存在。