Определите глобальные переменные как команды linux в Jenkins Pipeline - PullRequest
0 голосов
/ 10 октября 2019

В Jenkins Pipeline, есть ли способ определить глобальную переменную как команду Linux (на *****)? На данный момент мне нужно разделить одну переменную в node (в // *) и другую с тем же именем в environment (в // **). Я пытался с определениями ниже, хотя все они получают ошибки.

def SECOND_WORD = sh (скрипт: "echo $ {JENKINS_PROJECT_NAME} | cut -d'_ '-f2", returnStdout: true).trim ()

def SECOND_WORD = sh "echo $ {JENKINS_PROJECT_NAME} | cut -d'_ '-f2"

def SECOND_WORD = $ (echo $ {JENKINS_PROJECT_NAME} | cut -d'_' -f2)

def JENKINS_PROJECT_NAME="ABC_XYZ-123_QRS"
***** def SECOND_WORD= ??? *****

node('master') {
  stage('Set agent'){
     def SECOND_WORD=sh(script : "echo ${JENKINS_PROJECT_NAME} | cut -d'_' -f2", returnStdout: true).trim() //*
     if (SECOND_WORD ==~ /XYZ.*/) {
        AGENT_LABEL = "master"
     } else {
        AGENT_LABEL = "slave"
     }
   }
}

pipeline {
    agent {
       label "${AGENT_LABEL}"
    }
    environment {
        def SECOND_WORD=sh(script : "echo ${JENKINS_PROJECT_NAME} | cut -d'_' -f2", returnStdout: true).trim() //**
    }
    stages {
        stage('Normal build') {
           steps {
              echo "JENKINS_PROJECT_NAME = ${JENKINS_PROJECT_NAME}"
              echo "SECOND_WORD = ${SECOND_WORD}"
              echo "Running in ${AGENT_LABEL}"
              sh "hostname"
           }
        } 
    }
}
...