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

时间:2018-09-05 19:41:26

标签: groovy sh jenkins-pipeline

我在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/'
            }
        }

请咨询。

2 个答案:

答案 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。

相关问题