Как разделить значение переменной среды между различными конвейерами Jenkins? - PullRequest
1 голос
/ 07 февраля 2020

У меня есть два конвейера Jenkins:

  • Конвейер A: На этапе я определил переменную среды с именем MAVEN_PROFILE (пользователь может выбрать значение из списка)
  • Конвейер B: Мне нужно получить значение переменной среды MAVEN_PROFILE, которое было установлено в конвейере A

Мне нужны два конвейера, потому что я не могу сделать это в одном конвейере по причине процесса.

Я видел, что было несколько ответов о том, как распределить переменные между этапами в пределах одного конвейера, но это не мой случай.

Я хочу поделиться значением переменной среды между различными конвейерами.

Трубопровод 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}"
         }
       }
    }
  }
}

1 Ответ

1 голос
/ 07 февраля 2020

Они не работают в одной среде, поэтому они не могут напрямую использовать переменные среды. Возможно, проще всего записать эти значения в файл в рабочей области в конвейере A и прочитать их обратно в конвейере B. Примерно так:

Pipeline A:

sh "echo ${MAVEN_PROFILE} > .MAVEN_PROFILE" 

Pipeline B:

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