使用 groovy 脚本的 Jenkins 管道:执行 sh 命令时出错



我正在为 terraform 创建一个简单的管道,如下所示在 jenkins[安装在 Windows 上] 似乎 sh 命令不起作用,我的系统中有 git bash[即:C:\Program Files\Git\bin(]在我的系统中,并在环境变量中提供了路径,仍然收到如下错误:

java.io.IOException:创建进程错误=2,系统找不到指定的文件

导致:java.io.IOException:无法运行程序"nohup"(在目录"C:\Users\XYZ.jenkins\workspace\Pipe_Groovy"中(:CreateProcess错误= 2,系统找不到指定的文件

参考代码:

pipeline {
agent {
node {
label 'master'
}
}
stages {
stage('terraform started') {
steps {
sh 'echo "Started...!" '
}
}
stage('git clone') {
steps {
sh 'sudo rm -r *;sudo git clone https://gist.github.com/XXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
}
}
stage('tfsvars create'){
steps {
sh 'sudo cp /home/ec2-user/vars.tf ./jenkins/'
}
}

请指教。

你应该在Windows上的Jenkins管道中使用bat而不是sh。以下是有关使用bat的文档:

https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#-bat-%20windows%20batch%20script

即便如此,您可能也不需要nohup.但是,如果您仍然需要nohup,请考虑安装Cygwin。

有关相关的 Jenkins JIRA 问题,请参阅 https://issues.jenkins-ci.org/browse/JENKINS-33708。

使用 Windows 版本 2.16.2 的 Git,我能够将C:Program FilesGitusrbin添加到 PATH 中(而不是C:Program FilesGitbin(,因此我的 sh 命令适用于 FreeStyle 和 Pipeline 构建。

不需要mklink。

最新更新