首页 > 解决方案 > 如何将命令的输出放入 Jenkinsfile 中的环境变量中?

问题描述

所以,我可以在这样的步骤中捕获一个变量:

stage('blah') {
  script {
    INVENTORY_FILE = sh(returnStdout: true, script: 'echo $(date +%Y%m%d).yml')
  }
}

这有效。除了我需要这个变量在整个 Jenkinsfile 的范围内,对于所有阶段,而不仅仅是这个。但我似乎无法在舞台之外使用 sh() 。有任何想法吗?

标签: jenkinsscriptingjenkins-pipeline

解决方案


您可以在 Jenkinsfile 的顶部定义一个变量,然后您可以在整个 Jenkinsfile 中访问该变量。

def INVENTORY_FILE

pipeline {

    stages {

        stage('blah') {
          script {
            INVENTORY_FILE = sh(returnStdout: true, script: 'echo $(date +%Y%m%d).yml').trim()
          }
        }

    }
}

推荐阅读