在Jenkins管道中导出命令

时间:2017-06-05 21:47:47

标签: jenkins path export jenkins-pipeline

如何添加'导出' Jenkins管道中的unix命令? 我有一个Jenkins'舞台'和'步骤'在其中。 export命令的语法是什么。我需要设置环境变量' PATH'使用export命令。

1 个答案:

答案 0 :(得分:7)

您可以像这样更新$PATH

pipeline {
  agent { label 'docker' }
  stages {
    stage ('build') {
      steps {

        // JENKINSHOME is just a name to help readability
        withEnv(['PATH+JENKINSHOME=/home/jenkins/bin']) {
          echo "PATH is: $PATH"
        }
      }
    }
  }
}

当我运行时,结果是:

[Pipeline] echo
PATH is: /home/jenkins/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

这个PATH+JENKINSHOME语法到底是什么?引用blog at designhammer.com

此:

/my/additional/path:$PATH

表示为:

PATH+ANYSTRING=/my/additional/path.

ANYSTRING只是一个有助于提高可读性的名称。如果它对您的可读性没有帮助,则在您的视图中,您可以省略它。所以这是等价的:

PATH+=/my/additional/path

上述(withEnv)允许您更新管道特定部分的$PATH。要更新整个管道的$PATH,您无法使用PATH+ANYSTRING语法,但这可行:

pipeline {
  agent { label 'docker' }
  environment {
    PATH = "/hot/new/bin:$PATH"
  }
  stages {
    stage ('build') {
      steps {
        echo "PATH is: $PATH"
      }
    }
  }
}

产生输出:

[Pipeline] echo
PATH is: /hot/new/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games