Jenkins Pipeline: установка переменной среды на основе параметра - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь установить переменную среды в конвейерном задании Jenkins на основе параметра, переданного в задание; таким образом, я могу использовать переменную окружения на каждой стадии конвейера, которая этого требует. Я попытался использовать оператор switch в блоке среды:

parameters {
    choice(name: 'ENVIRONMENT', choices: 'dev\nst\nprod', description: 'Environment')
}
environment {
  script {
    switch(env.ENVIRONMENT) {
      case 'dev':
        BRANCH = master
        break
      case 'st':
        BRANCH = 2020Q1
        break 
      case 'prod':
        BRANCH = 2019Q4
        break        
    }
  }
}

Однако это не сработало, задание попыталось оценить все строки до знака равенства в качестве имени KEY:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 9: "script {
    switch(env.ENVIRONMENT) {
      case 'dev':
        BRANCH" is not a valid identifier and cannot be used for an environment variable. Identifiers must start with a letter or underscore and can contain only letters, numbers or underscores. @ line 9, column 7.
     script {

Как мне заставить это работать?

1 Ответ

2 голосов
/ 05 февраля 2020

Есть несколько способов достичь этого. вот один из них:

parameters {
   choice(name: 'ENVIRONMENT', choices: 'dev\nst\nprod', description: 'Environment')
}

stages(){
  stage("some stage"){
    steps {
        script{
            switch(env.ENVIRONMENT) {
              case 'dev':
                env.BRANCH = "master"
                break
              case 'st':
                env.BRANCH = "2020Q1"
                break 
              case 'prod':
                env.BRANCH = "2019Q4"
                break        
            }
            withEnv(["BRANCH=${env.BRANCH}"]) {
                ...................................
                ...................................
                ...................................

           }
        }
     }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...