如何从发布步骤访问jenkinsfile本地环境变量?

时间:2019-01-10 02:57:33

标签: jenkins-pipeline

我正在尝试将构建后步骤添加到我的jenkinsfile中,以将标签应用于构建。 Jenkins变量可以很好地解析,但是我在文件中全局定义的环境变量无法解析。这是相关的位:

pipeline {
  environment {
    VERSION_MAJOR = '1'
    VERSION_MINOR = '0'
    VERSION_PATCH = '0'
  }
  stages {
    stage('Build') {
      steps {
        echo('Testing p4Tag')
      }
    }
  }
  post {
    success {
      build job: 'Copy-Installers',
        parameters: [
          // 
          string(name: 'MASTER_VERSION_MAJOR', value: '${VERSION_MAJOR}'),
          string(name: 'MASTER_VERSION_MINOR', value: '${VERSION_MINOR}'),
          string(name: 'MASTER_VERSION_FEATURE', value: '${VERSION_PATCH}'),
          string(name: 'MASTER_BUILD_NUMBER', value: '${BUILD_NUMBER}'),
          string(name: 'COMPONENT_NAME', value: 'Console')
    }
  }
}

下游构建失败。查看日志,似乎未传入本地环境变量:

The Build Number name is: ${VERSION_MAJOR}
The Build Number name is: ${VERSION_MINOR}
The Build Number name is: ${VERSION_PATCH}
The Build Number name is: 924
The Build environment name is: Console

更新

我也尝试了以下变体:

  • value: '${env.VERSION_MAJOR}'-与上述失败类似
  • value: '$VERSION_MAJOR'-与上述失败类似
  • value: $VERSION_MAJOR-失败,并显示“无此类属性”错误

更新2

对于它们的价值,可以从stage部分引用这些变量 。例如,这可以按预期工作:

stage('build') {
  sh('./Build/build-package.sh $VERSION_MAJOR $VERSION_MINOR $VERSION_PATCH $BUILD_NUMBER')
}

1 个答案:

答案 0 :(得分:0)

替换以下内容

string(name: 'MASTER_VERSION_MAJOR', value: '${VERSION_MAJOR}'),

string(name: 'MASTER_VERSION_MAJOR', value: '${env.VERSION_MAJOR}'),

对其他变量也是如此。

我希望它对您有用。