在 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 = msysuname = 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.exeC:\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 将工作