我有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脚本?
答案 0 :(得分:27)
通过快速搜索,您的错误似乎与以下问题有关:JENKINS-33708
主要原因似乎是Windows不支持sh
步骤。例如,您可以使用bat
或安装Cygwin
。
然而,在前一个链接中提出了两个解决方案,建议您执行以下步骤:
C:\Program Files\Git\bin
)位于全局搜索路径中,以便Jenkins找到sh.exe 根据您的安装,您可能必须使用以下路径:
答案 1 :(得分:1)
使用Windows 2.16.2的Git,我可以将C:\ Program Files \ Git \ usr \ bin添加到PATH(而不是C:\ Program Files \ Git \ bin),因此我的sh命令可以在FreeStyle和Pipeline构建。无需mklink。 (Source)
答案 2 :(得分:1)
使用Windows版Git时,我必须将C:\Program Files\Git\bin
添加到Jenkins中从节点的PATH
环境变量中(才能访问sh
),然后添加{{1} }也可以在Windows从站上本地C:\Program Files\Git\usr\bin
上使用(以访问PATH
)。
答案 3 :(得分:0)
将sh切换为bat对我有用-我在Windows上运行Jenkins。但是只有当我解决了由于我也没有在Jenkins中正确配置我的工具(Maven和JDK)而导致的问题之后。
答案 4 :(得分:0)
如果在Windows上执行,只需将sh更改为bat。它会按预期工作。 示例:
管道{ 代理任何 阶段{ 阶段(“编译阶段”){
WHERE JSON_SEARCH(category_id, 'all', '%1%') IS NOT NULL
} }
答案 5 :(得分:0)
我的观察是,代理似乎正在尝试在运行agent.jar的上下文中而不是在容器中运行nohup。我放入容器中没关系,错误消息是相同的。通过将nohup和sh放在jenkins代理运行的PATH中,我看到了行为上的变化。
git config core.sparsecheckout#timeout = 10 git checkout -f c64c7bf905b6a4f5a8f85eb23bbd108f4c805386 sh:/home/jenkins/workspace/projname/simple_docker@tmp/durable-9fedc317/jenkins-log.txt:没有这样的文件或目录 sh:/home/jenkins/workspace/projname/simple_docker@tmp/durable-9fedc317/jenkins-result.txt.tmp:没有这样的文件或目录 mv:无法统计'/home/jenkins/workspace/projname/simple_docker@tmp/durable-9fedc317/jenkins-result.txt.tmp':没有此类文件或目录
我看到一个文件夹/ home / jenkins / workspace / projname / simple_docker @ tmp / durable-9fedc317,其中包含文件“ script.sh”,内容为“ docker inspect -f。repositoryname:tagname”
当此docker命令在命令行上手动运行时,它始终会生成由单个句点字符组成的一行输出。毫无疑问,这不是詹金斯系统正在寻找的东西。
答案 6 :(得分:0)
因此,您希望作业在WSL下运行。如果要让所有作业在WSL下运行,是否考虑过在WSL下安装Jenkins?那么一切都已经在GNU领域中了,您不必在Jenkins配置中将Windows的环境/文化与GNU桥接起来。
答案 7 :(得分:0)
在我的情况下,我在Pipeline脚本中将“ sh”替换为“ bat”并起作用。
答案 8 :(得分:0)
Windows无法理解“ sh”命令。要启用此功能,请添加
C:\ Program Files \ Git \ bin&
C:\ Program Files \ Git \ usr \ bin
进入系统环境变量PATH,然后重新启动系统。
比用jenkins执行命令更有效。
答案 9 :(得分:0)
我在 Windows 10 中遇到了上述问题,只是将路径 "C:\Program Files\Git\usr\bin" 添加到系统变量然后它开始工作。
答案 10 :(得分:0)
我在以下解决方案中遇到了同样的错误..
安装 git-bash
对于 windows 使用“bat”而不是“sh”
将“C:\Program Files\Git\usr\bin”设置为PATH(用户变量)
答案 11 :(得分:-1)
sh 不是 windows 命令。在 Windows 中启用“sh”命令的简单方法是安装 GIT BASH
安装 GIT BASH 后,需要设置以下环境变量路径。
通过设置以上配置,您将能够在安装在 windows 机器上的 Jenkins 上的 Jenkinsfiles 中执行 'sh' 命令。