В 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"
}
}
}
}