在Jenkins管道中导出命令

One*_*lus 2 export path jenkins jenkins-pipeline

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

bur*_*ttk 8

您可以更新$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"
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,结果是:

[Pipeline] echo
PATH is: /home/jenkins/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Run Code Online (Sandbox Code Playgroud)

这句法是什么意思PATH+JENKINSHOME?引自designhammer.com博客:

这个:

/my/additional/path:$PATH
Run Code Online (Sandbox Code Playgroud)

表达为:

PATH+ANYSTRING=/my/additional/path.
Run Code Online (Sandbox Code Playgroud)

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

PATH+=/my/additional/path
Run Code Online (Sandbox Code Playgroud)

上面的(withEnv)允许您更新$PATH管道的特定部分.要更新$PATH整个管道,您不能使用PATH+ANYSTRING语法,但这有效:

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

产生输出:

[Pipeline] echo
PATH is: /hot/new/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Run Code Online (Sandbox Code Playgroud)

  • 在`stage``环境`块中设置`PATH`不起作用.我还没弄清楚原因.如果我在`pipeline`的主`environment`块中设置它,那么整个管道都会受到影响,这是我不需要的.我只需要测试阶段.我最终在`steps`中的`sh`块中输出`export PATH = foo:\ $ PATH`.这有效. (2认同)