Сценарий Declrative Pipeline с настройкой переменных задолго до входа в этапы - PullRequest
0 голосов
/ 17 января 2019

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

Как раз с одним параметром, я хотел построить другие переменные динамически с условием if в этот момент, пробовал на обоих блоках (Environment, Node), но не повезло, так как это нужно глобально, мне нужно это инициализировать перед входом в этапы

  pipeline {
    environment {
    stream_name = "${stream_name}"
    user_id = "${user_id}"
    currentBuild_displayName = "${currentBuild_displayName}"
    GBE_ViewTag = "${DevWorkspace_name}"
    script {
        if ( ${Stream_name} == 'Allura_Main_Infra_PreInt') {
        loadrule = "Infra-uInfra/Infra.loadrule"
        } 
    }
}
agent   {
    node {
        label 'CP'
        customWorkspace 'D:\\RTC'

    }
  }

Ответы [ 2 ]

0 голосов
/ 22 января 2019

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

def user_id = currentBuild.rawBuild.getCause(Cause.UserIdCause).getUserId()
def full_name = currentBuild.rawBuild.getCause(Cause.UserIdCause).getUserName()
DevWorkspace_name = "${Developer_workspace}"
if ( DevWorkspace_name ==~ /(?s).*Allura_Main_Infra_PreInt.*/) {
        loadrule = "Infra-uInfra/Infra.loadrule"
        subsystem = "Infra"
        stream_name = "Allura_Main_Infra_PreInt"  
 } 
 pipeline {
  .....
 }
0 голосов
/ 17 января 2019

Привет, вы можете использовать блок среды {} на уровне конвейера или на каждом этапе. В блоке «Окружение» вы можете установить проверку переменных ниже, например:

pipeline {
    agent {label 'master'}
    environment{
        env1 = 'value0' // these are environment variables for all stages
    }
    stages{
        stage('stage 1') {
            environment{
                    env1 = 'value1' // these are environment variables for 'stage 1'
                    }
            steps{

                echo "$env1"
              }
            }
        stage('stage 2') {
            environment{
                    env1 = 'value2' // these are environment variables for 'stage 2'
                    }
            steps{

                echo "$env1"
              }
            }
        stage('stage 3') {
            steps{
                echo "$env1"
              }
            }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...