如何在不同的 Jenkins 管道之间共享环境变量值?

How to share environment variable value across different Jenkins Pipelines?

我有两个 Jenkins 管道:

我需要两条管道,因为出于流程原因我无法在一条管道中完成。

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

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

管道 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}"
         }
       }
    }
  }
}

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

管道 A:

sh "echo ${MAVEN_PROFILE} > .MAVEN_PROFILE" 

管道 B:

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