我有Windows 10,我想在Jenkins管道中使用bash为Ubuntu for windows执行Jen命令中的sh命令,但它不起作用
我的Jenkins管道中有以下阶段:
stage('sh how to') {
steps {
sh 'ls -l'
}
}
错误消息是:
[C:\ Program Files(x86)\ Jenkins \ workspace \ pipelineascode]运行shell脚本无法运行程序“nohup”(在目录“C:\ Program Files(x86)\ Jenkins \ workspace \ pipelineascode”中):CreateProcess error = 2,Lefichierspécifiéestintrouvable
我尝试用更改Jenkins参数 - > shell可执行文件
C:\ Windows \ System32 \ bash.exe
但同样的错误......
如何使用Windows 10的bash运行sh脚本?
4 回答
从非常快速的搜索,您的错误看起来与以下问题有关:JENKINS-33708
主要原因看起来像Windows上不支持
sh
步骤 . 例如,您可以使用bat
或安装Cygwin
.然而,在前一个链接中提出了两种解决方案,建议您执行以下步骤:
安装git-bash
确保Git \ bin文件夹(即:
C:\Program Files\Git\bin
)在全局搜索路径中,以便Jenkins找到sh.exe为Jenkins提供nohup,在git-bash中执行以下操作(相应地调整路径):
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”
根据您的安装,您可能必须使用以下路径:
mklink“C:\ Program Files \ Git \ cmd \ nohup.exe " " C:\ Program Files \ git \ usr \ bin \ nohup.exe”
mklink“C:\ Program Files \ Git \ cmd \ msys-2.0.dll " " C:\ Program Files \ git \ usr \ bin \ msys-2.0.dll”
mklink“C:\ Program Files \ Git \ cmd \ msys-iconv-2.dll " " C:\ Program Files \ git \ usr \ bin \ msys-iconv-2.dll”
mklink“C:\ Program Files \ Git \ cmd \ msys-intl-8.dll " " C:\ Program Files \ git \ usr \ bin \ msys-intl-8.dll”
使用Git for Windows 2.16.2,我能够将C:\ Program Files \ Git \ usr \ bin添加到PATH(而不是C:\ Program Files \ Git \ bin),因此我的sh命令在FreeStyle和管道构建 . 没有mklink是必要的 . (Source)
切换到bat为我工作 - 我在Windows上运行Jenkins . 但只有在我解决了由于我没有在Jenkins中正确配置我的工具(maven和JDK)这一事实导致的问题之后 .
使用Git for Windows,我不得不将
C:\Program Files\Git\bin
添加到Jenkins中从属节点的PATH
环境变量(以访问sh
),然后将C:\Program Files\Git\usr\bin
添加到Windows从属本地的PATH
(以访问nohup
) .