我有一个Windows 7和一个Windows Server 2012的奴隶jenkins代理和Cygwin已经成立。 我想避免使用Cygwin,只使用Git for Windows附带的Git Bash shell(我认为它叫做msysgit)。 所以我把C:\cygwin64
改名为C:\cygwin64.bak
,从path中删除了C:\cygwin64\bin
,然后重新启动。
现在Windows 2012的工作正常,(Unix)shell脚本运行, $OSTYPE = msys
, uname = MSYS_NT-6.3
(表示Git Bash shell正在运行)。
Windows 7框将不会运行任何东西,并提供以下错误:
在工作区C:\ Users \ Jenkins \ workspace \ TEST中在win7上远程构build
[win7] $ sh -xe C:\ Users \ jenkins \ AppData \ Local \ Temp \ hudson5047939025129374618.sh
该系统找不到指定的文件
致命:命令执行失败
java.io.IOException:无法运行程序“sh”(在目录“C:\ Users \ Jenkins \ workspace \ TEST”中):CreateProcess
错误= 2,系统找不到指定的文件。
在java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
所以我的问题是,如何configurationJenkins使用C:\Program Files\Git\bin\sh.exe
或C:\Program Files\Git\usr\bin\bash.exe
来运行shell脚本?
我已经完成了。 詹金斯将简单地选择路径中的第一个sh.exe。 Git Bash在C:\Program Files\Git\usr\bin
有一个exe C:\Program Files\Git\usr\bin
,所以如果你把它添加到你的路径的开头,它将被Jenkins拾取。
进行此更改后,您必须重新启动与Jenkins的从属连接,否则路径将不会传播。 如果您正在使用Java Web Start,请关闭Java窗口并重新启动它。
如果您只有Windows代理,并且他们都将Git for Windows安装到相同位置,则可以在Jenkins系统配置中为所有代理设置shell可执行文件。
转到管理Jenkins > 配置系统 ,向下滚动到Shell ,并将Shell可执行文件设置为指向您要使用Execute shell构建步骤启动的任何shell。
以下是如何设置与Git for Windows一起安装的shell的示例:
注意:如果您有Windows和非Windows代理( JENKINS-38211 )的混合,这将不起作用。 如果您有将sh.exe
安装到不同位置的Windows代理(例如,使用这些平台的默认安装位置的32位和64位Windows的混合),则会导致类似的问题。 只有当您的环境只包含相同配置的Windows节点时才使用它。