在 Jenkins 中更改 Windows shell(从 Cygwin 到 Git Bash/msys)
Change Windows shell in Jenkins (from Cygwin to Git Bash/msys)
我有一个 Windows 7 和一个 Windows Server 2012 从站,已经设置了 Jenkins 代理和 Cygwin。我想避免使用 Cygwin,只使用 Git 附带的 Git Bash shell for Windows(我认为它叫做 msysgit)。所以我将 C:\cygwin64
重命名为 C:\cygwin64.bak
,从路径中删除 C:\cygwin64\bin
,然后重新启动。
Windows 2012 框现在工作正常,(Unix) shell 脚本 运行、$OSTYPE = msys
和 uname = MSYS_NT-6.3
(表明 Git Bash shell 是 运行ning).
Windows 7 框不会运行任何东西,并给出以下错误:
Building remotely on win7 in workspace C:\Users\Jenkins\workspace\TEST
[win7] $ sh -xe C:\Users\jenkins\AppData\Local\Temp\hudson5047939025129374618.sh
The system cannot find the file specified
FATAL: command execution failed
java.io.IOException: Cannot run program "sh" (in directory "C:\Users\Jenkins\workspace\TEST"): CreateProcess
error=2, The system cannot find the file specified.
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
所以我的问题是,如何配置 Jenkins 以使用 C:\Program Files\Git\bin\sh.exe
或 C:\Program Files\Git\usr\bin\bash.exe
到 运行 shell 脚本?
我已经解决了。 Jenkins 将简单地选择路径中的第一个 sh.exe。 Git Bash 在 C:\Program Files\Git\usr\bin
有一个 exe,所以如果你把它添加到你的路径的开头,它将被 Jenkins 拾取。
进行此更改后,您必须重新启动从服务器与 Jenkins 的连接,否则路径将无法传播。如果您正在使用 Java Web Start,只需关闭 java window 并重新启动它。
如果您只有 Windows 个代理,并且它们都将 Windows 的 Git 安装到同一位置,您可以为所有代理设置 shell 可执行文件詹金斯系统配置。
转到管理 Jenkins > 配置系统,向下滚动到 Shell 并设置 Shell 可执行文件 以指向任何 shell 你想用 Execute shell构建步骤。
下面是一个如何设置 shell 的示例,它与 Git 一起安装用于 Windows:
注意:如果您混合使用 Windows 和非 Windows 代理 (JENKINS-38211),这将不起作用。如果您有 Windows 代理,其中 sh.exe
安装到不同的位置(例如 32 位和 64 位的混合 Windows 使用默认安装位置平台)。仅当您的环境仅包含相同配置的 Windows 个节点时才使用它。
安装git-bash
确保 Git\bin 文件夹(即:C:\Program Files\Git\bin)在全局搜索路径中,以便 Jenkins 找到 sh.exe
要更新 windows 中的路径,请使用以下命令
setx 路径“%path%;C:\Program Files\Git\bin”
或在这里查看 https://www.windows-commandline.com/set-path-command-line/
为 Jenkins 提供 nohup
mklink "C:\Program Files\Git\bin\nohup.exe" "C:\Program
Files\git\usr\bin\nohup.exe
mklink "C:\Program Files\Git\bin\msys-2.0.dll" "C:\Program
Files\git\usr\bin\msys-2.0.dll"
mklink "C:\Program Files\Git\bin\msys-iconv-2.dll" "C:\Program
Files\git\usr\bin\msys-iconv-2.dll
mklink "C:\Program Files\Git\bin\msys-intl-8.dll" "C:\Program
Files\git\usr\bin\msys-intl-8.dll
就是这样,现在您可以 运行 shell 命令
玩得开心
关于节点代理配置:
检查工具位置,
添加 git 的主路径,
例如 C:\Program Files\Git\cmd\git.exe
并保存
重新连接 client.it 将工作
我有一个 Windows 7 和一个 Windows Server 2012 从站,已经设置了 Jenkins 代理和 Cygwin。我想避免使用 Cygwin,只使用 Git 附带的 Git Bash shell for Windows(我认为它叫做 msysgit)。所以我将 C:\cygwin64
重命名为 C:\cygwin64.bak
,从路径中删除 C:\cygwin64\bin
,然后重新启动。
Windows 2012 框现在工作正常,(Unix) shell 脚本 运行、$OSTYPE = msys
和 uname = MSYS_NT-6.3
(表明 Git Bash shell 是 运行ning).
Windows 7 框不会运行任何东西,并给出以下错误:
Building remotely on win7 in workspace C:\Users\Jenkins\workspace\TEST
[win7] $ sh -xe C:\Users\jenkins\AppData\Local\Temp\hudson5047939025129374618.sh
The system cannot find the file specified
FATAL: command execution failed
java.io.IOException: Cannot run program "sh" (in directory "C:\Users\Jenkins\workspace\TEST"): CreateProcess
error=2, The system cannot find the file specified.
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
所以我的问题是,如何配置 Jenkins 以使用 C:\Program Files\Git\bin\sh.exe
或 C:\Program Files\Git\usr\bin\bash.exe
到 运行 shell 脚本?
我已经解决了。 Jenkins 将简单地选择路径中的第一个 sh.exe。 Git Bash 在 C:\Program Files\Git\usr\bin
有一个 exe,所以如果你把它添加到你的路径的开头,它将被 Jenkins 拾取。
进行此更改后,您必须重新启动从服务器与 Jenkins 的连接,否则路径将无法传播。如果您正在使用 Java Web Start,只需关闭 java window 并重新启动它。
如果您只有 Windows 个代理,并且它们都将 Windows 的 Git 安装到同一位置,您可以为所有代理设置 shell 可执行文件詹金斯系统配置。
转到管理 Jenkins > 配置系统,向下滚动到 Shell 并设置 Shell 可执行文件 以指向任何 shell 你想用 Execute shell构建步骤。
下面是一个如何设置 shell 的示例,它与 Git 一起安装用于 Windows:
注意:如果您混合使用 Windows 和非 Windows 代理 (JENKINS-38211),这将不起作用。如果您有 Windows 代理,其中 sh.exe
安装到不同的位置(例如 32 位和 64 位的混合 Windows 使用默认安装位置平台)。仅当您的环境仅包含相同配置的 Windows 个节点时才使用它。
安装git-bash
确保 Git\bin 文件夹(即:C:\Program Files\Git\bin)在全局搜索路径中,以便 Jenkins 找到 sh.exe
要更新 windows 中的路径,请使用以下命令
setx 路径“%path%;C:\Program Files\Git\bin”
或在这里查看 https://www.windows-commandline.com/set-path-command-line/
为 Jenkins 提供 nohup
mklink "C:\Program Files\Git\bin\nohup.exe" "C:\Program Files\git\usr\bin\nohup.exe
mklink "C:\Program Files\Git\bin\msys-2.0.dll" "C:\Program Files\git\usr\bin\msys-2.0.dll"
mklink "C:\Program Files\Git\bin\msys-iconv-2.dll" "C:\Program Files\git\usr\bin\msys-iconv-2.dll
mklink "C:\Program Files\Git\bin\msys-intl-8.dll" "C:\Program Files\git\usr\bin\msys-intl-8.dll
就是这样,现在您可以 运行 shell 命令
玩得开心
关于节点代理配置: 检查工具位置, 添加 git 的主路径, 例如 C:\Program Files\Git\cmd\git.exe 并保存 重新连接 client.it 将工作