Ниже приведен мой сценарий для конвейера jenkins, где я меняю одно из значений env на одном из этапов и использую эти пользовательские env в теле сообщения электронной почты.
pipeline {
agent none
environment {
ENV_STAGE = 'dev'
UNTTST_SNRSCN = 'false'
SNRSCN_OUTPUT = ''
BRANCHNAME = 'development'
EMAIL_RECIPIENTS = '[email protected]'
}
stages {
stage("Sonar-api"){
when{
expression { params.UNTTST_SNRSCN == 'true' }
}
agent{ label "worker" }
stages{
stage('SonarQube analysis') {
steps {
script {
scannerHome = tool 'sonar-scanner';
}
withSonarQubeEnv('sonarqube9000') {
git branch: '${BRANCHNAME}', credentialsId: '', url: ''
dir ("$WORKSPACE/api/") {
sh "npm install && npm install -D typescript"
sh "npm run test"
sh """/opt/sonar-scanner/bin/sonar-scanner"""
sh "sleep 20"
}
}
}
}
stage ("Clearing Workspace"){
steps{
cleanWs()
}
}
}
}
stage("Build and deploy"){
agent{ label 'worker' }
stages {
stage("Checkout Sourcecode") {
steps{
git branch: "${BRANCHNAME}", credentialsId: '', url: ''
}
}
stage ("Set scan output"){
steps {
script {
if (env.UNTTST_SNRSCN == 'true') {
def SNRSCN_OUTPUT = 'Unit test and sonar scanning performed.'
sh "echo $SNRSCN_OUTPUT"
} else if (env.UNTTST_SNRSCN == 'false') {
def SNRSCN_OUTPUT = 'Unit test and sonar scanning not performed.'
sh "echo $SNRSCN_OUTPUT"
}
}
}
}
stage ("Clearing Workspace"){
steps{
cleanWs()
}
}
}
}
}
post {
failure {
emailext body: """Hi,
Env stage ${env.ENV_STAGE} deployment failed. Please check jenkins error logs and redeploy.
${env.SNRSCN_OUTPUT}
Regards,
DT""", subject: "Deployment #${BUILD_NUMBER} - ${currentBuild.currentResult}", to: "${env.EMAIL_RECIPIENTS}"
}
}
}
Я ожидаю значение SNRSCN_OUTPUT в электронной почте, но я продолжаю получать его как нулевое. Как мне этого добиться? я хочу, чтобы новое значение SNRSCN_OUTPUT из этапа «Установить вывод сканирования» отображалось в электронной почте. Цените ваш ценный вклад.
Subject: Deployment #26 - FAILURE
Hi,
Env stage dev deployment failed. Please check jenkins error logs and redeploy.
null
Regards,
DT