我在jenkins中为下面的terraform创建一个简单的管道[安装在Windows上]似乎sh命令不起作用,我的系统中有git bash [ie:C:\ Program Files \ Git \ bin)]系统并在环境变量中提供了路径,仍然出现如下错误:
java.io.IOException:CreateProcess错误= 2,系统找不到指定的文件
原因:java.io.IOException:无法运行程序“ nohup”(在目录“ C:\ Users \ XYZ.jenkins \ workspace \ Pipe_Groovy”中):CreateProcess error = 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/'
}
}
请咨询。
答案 0 :(得分:1)
您应该在Windows的Jenkins管道中使用bat
而不是sh
。这是使用bat
的文档:
https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#-bat-%20windows%20batch%20script
即使那样,您可能也不需要nohup
。但是,如果您仍然需要nohup
,请考虑安装Cygwin。
请参阅https://issues.jenkins-ci.org/browse/JENKINS-33708,了解有关Jenkins JIRA的问题。
答案 1 :(得分:1)
使用Windows版2.16.2的Git,我可以将C:\Program Files\Git\usr\bin
添加到PATH(而不是C:\Program Files\Git\bin
)中,因此我的sh命令可以在FreeStyle和Pipeline构建中使用。
不需要mklink。