Bash Jenkins管道sh出现故障,并出现“故障”;无法运行程序nohup";在窗户上
我有windows 10,我想使用bash for Ubuntu for windows在Jenkins管道的Jenkins文件中执行sh命令,但它不起作用 我在Jenkins管道中有以下阶段:Bash Jenkins管道sh出现故障,并出现“故障”;无法运行程序nohup";在窗户上,bash,jenkins,windows-10,jenkins-pipeline,Bash,Jenkins,Windows 10,Jenkins Pipeline,我有windows 10,我想使用bash for Ubuntu for windows在Jenkins管道的Jenkins文件中执行sh命令,但它不起作用 我在Jenkins管道中有以下阶段: stage('sh how to') { steps { sh 'ls -l' } } 错误消息是: [C:\Program Files(x86)\Jenkins\workspace\PipelineScode]正在运行shell脚本 无
stage('sh how to') {
steps {
sh 'ls -l'
}
}
错误消息是:
[C:\Program Files(x86)\Jenkins\workspace\PipelineScode]正在运行shell脚本
无法运行程序“nohup”(在目录“C:\program Files(x86)\Jenkins\workspace\PipelineScode)”中):CreateProcess error=2,Le fichier spécifiéest introvable
我尝试使用更改Jenkins参数->shell可执行文件
C:\Windows\System32\bash.exe
但同样的错误
如何使用windows 10的bash运行sh脚本?通过快速搜索,您的错误似乎与以下问题有关: 主要原因似乎是Windows不支持
sh
步骤。例如,您可以使用bat
或安装Cygwin
尽管如此,在上一个链接中提出了两个解决方案,建议您执行以下步骤:
- 安装
- 确保Git\bin文件夹(即:
)位于全局搜索路径中,以便Jenkins查找sh.exeC:\Program Files\Git\bin
- 在git bash中执行以下操作(相应地调整路径),使nohup可用于Jenkins:
- 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”
C:\Program Files\Git\bin
添加到Jenkins从节点的路径
环境变量中(以访问sh
),然后将C:\Program Files\Git\usr\bin
添加到Windows从节点本地的路径
(以访问nohup
).如果在Windows上执行,只需将sh更改为bat即可。它将按预期工作。
例如:
管道{
任何代理人
舞台{
阶段(‘编译阶段’){
}
}我的观察结果是,代理似乎试图在运行agent.jar的上下文中运行nohup,而不是在容器中。不管我在容器中放了什么,错误消息都是一样的。通过将nohup和sh放在jenkins代理运行的路径中,我看到了行为上的变化 git config core.sparsecheckout#timeout=10 git签出-f c64c7bf905b6a4f5a8f85eb23bbd108f4c805386 sh:/home/jenkins/workspace/projname/simple_docker@tmp/持久-9fedc317/jenkins-log.txt:没有这样的文件或目录 sh:/home/jenkins/workspace/projname/simple_docker@tmp/持久-9fedc317/jenkins-result.txt.tmp:没有这样的文件或目录 mv:无法统计“/home/jenkins/workspace/projname/simple”_docker@tmp/持久-9fedc317/jenkins result.txt.tmp”:没有这样的文件或目录 我看到一个文件夹/home/jenkins/workspace/projname/simple_docker@tmp/耐用-9fedc317,其中包含一个文件“script.sh”,内容为“docker inspect-f.repositoryname:tagname”
当这个docker命令在命令行上手动运行时,它总是生成一行由单个句点字符组成的输出。我毫不怀疑这不是jenkins系统想要的。所以您希望作业在WSL下运行。如果您希望所有作业在WSL下运行,您是否考虑过在W下安装jenkinsSL?那么一切都已经在GNU的土地上了,你不必从Jenkins配置中将windows的环境/文化连接到GNU。在我的例子中,我在管道脚本中将“sh”替换为“bat”并工作。windows不理解“sh”命令。要启用它,请添加 C:\ProgramFiles\Git\bin& C:\ProgramFiles\Git\usr\bin 到系统环境变量路径,然后重新启动系统
然后在jenkins中执行您的命令,它就会工作。我在windows 10中遇到了上述问题,并在系统变量中添加了路径“C:\Program Files\Git\usr\bin”,然后它就开始工作。sh不是windows命令。在windows中启用“sh”命令的简单方法是安装 一旦安装GitBash,就需要在下面设置环境变量path
steps {
withMaven(maven : 'apache-maven-3.6.1') {
bat'mvn clean compile'
}
}
}