【问题标题】:How to share environment variable value across different Jenkins Pipelines?如何在不同的 Jenkins Pipelines 之间共享环境变量值?
【发布时间】:2020-02-07 10:50:31
【问题描述】:

我有两个 Jenkins 流水线:

  • 流水线 A:在一个阶段,我定义了一个名为 MAVEN_PROFILE 的环境变量(用户可以从列表中选择一个值)
  • 管道 B:我需要获取在管道 A 中设置的 MAVEN_PROFILE 环境变量值

我需要两个管道,因为出于流程原因,我无法在单个管道中执行此操作。

我看到有一些关于如何在单个管道中的阶段之间共享变量的答案,但这不是我的情况。

我想在不同的管道之间共享环境变量值。

管道 A

pipeline {
 agent any
...
 stages {
    stage('Profile Selection'){
       steps {
         script {
             env.MAVEN_PROFILE = input message: 'Choose the profile :',
             parameters: [choice(name: 'MAVEN_PROFILE', 
            choices: 'all\nserver\nclient', description: 'Profiles')]
         }
       }
    }
 stage(...){
       steps {
         script {
           bat "mvn deploy -P ${env.MAVEN_PROFILE}"
         }
       }
    }
... other stages
  }
}

管道 B

pipeline {
 agent any
...
 stages {
... other stages
    stage(...){
       steps {
         script {
           bat "mvn release ... -P ${env.environmentVariableValueFromPipelineA}"
         }
       }
    }
  }
}

【问题讨论】:

    标签: jenkins jenkins-declarative-pipeline


    【解决方案1】:

    它们不在同一个环境中运行,因此它们不能直接共享环境变量。最简单的可能是将这些值写入管道 A 的工作区中的文件,然后在管道 B 中读回它们。像这样:

    管道 A:

    sh "echo ${MAVEN_PROFILE} > .MAVEN_PROFILE" 
    

    管道 B:

    def MAVEN_PROFILE = sh(script: 'cat .MAVEN_PROFILE', returnStdout: true).trim()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 2018-06-22
      相关资源
      最近更新 更多