Глобальные переменные Jenkinsile вне раздела «Этапы» - PullRequest
0 голосов
/ 24 сентября 2019

Я хотел бы установить переменную, которая будет доступна для всех этапов.Переменная, которая зависит от выбранного параметра, что-то вроде этого:

parameters {
      choice(name: 'Environment', choices: ['Dev', 'Stage'], description: 'Deploy to chosen environment')
  }

environment { 
       //set the config file which depends on params.Environment e.g.
       //case params.Environment of
       //   Dev -> CONFIG_FILE="deploy/file_1.conf"
       //   Stage -> CONFIG_FILE="deploy/other_file.conf"
  }

stages {
   stage('check-params') {   
     steps {
        sh "echo \"config file: ${CONFIG_FILE}\""
        }
     }
    stage('build-frontend') {   
     steps {
        sh "build-fronted.sh ${CONFIG_FILE}"
        }
     }
    stage('deploy-backend') {   
     steps {
        sh "deploy-backend.sh ${CONFIG_FILE}"
        }
     }

, но в соответствии с Синтаксисом конвейера это недопустимо (я получаю ОШИБКА: Ожидаемое имя = пары значений ).

Кто-нибудь знает, как я могу добиться этого, не используя scripts { ... } на каждом этапе-> шаг, как описано в этом посте ?

1 Ответ

1 голос
/ 24 сентября 2019

У вас может быть этап инициализации, который установит правильную переменную в зависимости от параметра, примерно так:

parameters {
    choice(name: 'Environment', choices: ['Dev', 'Stage'], description: 'Deploy to chosen environment')
}

environment { 
       //set the config file which depends on params.Environment e.g.
       //case params.Environment of
       //   Dev -> CONFIG_FILE="deploy/file_1.conf"
       //   Stage -> CONFIG_FILE="deploy/other_file.conf"
}

stages {

    // ----------------------------
    stage('init-env-variables') {
        steps {
            script {
                switch(params.Environment) {
                    case "Dev":
                        env.setProperty('CONFIG_FILE', 'deploy/file_1.conf')
                        break;
                    case "Stage":
                        env.setProperty('CONFIG_FILE', 'deploy/other_file.conf')
                        break;
                }
            }
        }
    }
    // -----------------------

    stage('check-params') {   
        steps {
            sh "echo \"config file: ${CONFIG_FILE}\""
        }
    }
    stage('build-frontend') {   
        steps {
            sh "build-fronted.sh ${CONFIG_FILE}"
        }
    }
    stage('deploy-backend') {   
        steps {
            sh "deploy-backend.sh ${CONFIG_FILE}"
        }
    }

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