Существует переменная с именем env.STAGE_NAME
, которую вы можете использовать.Однако в вашем случае вам, вероятно, нужно будет сохранить имя этапа в другой переменной, потому что, когда вы получите env.STAGE_NAME
на этапе post
, результат будет Declarative: Post Actions
.Вместо этого вам нужно будет хранить имя этапа в переменной на всех этапах.Поэтому, если этап не пройден - Дженкинс не будет переходить к следующим этапам, и поэтому у вас будет «сбойное» имя этапа.
Вот пример:
def FAILED_STAGE
pipeline {
agent { label "master" }
stages {
stage("Stage 1") {
steps {
script {
FAILED_STAGE=env.STAGE_NAME
echo "stage 1"
}
}
}
stage("Stage 2") {
steps {
script {
FAILED_STAGE=env.STAGE_NAME
echo "stage 2"
error "failed for some reason."
}
}
}
stage("Stage 3") {
steps {
script {
FAILED_STAGE=env.STAGE_NAME
echo "stage 3"
}
}
}
}
post {
failure {
echo "Failed stage name: ${FAILED_STAGE}"
}
}
}
Возможно, лучшеспособ сделать это, но я пока не нашел.
Относительно журналов - Начиная с JENKINS-40526 вы могли бы использовать API и получить оттуда файл журнала,но я не уверен, что вы можете получить нужные параметры из конвейера.Другим решением будет использование emailext и отправка по электронной почте всего файла журнала сборки:
emailext attachLog: true, body: '', compressLog: true, subject: 'Build failed.', to: 'somebody@somewhere.com'