Я пытаюсь написать сценарий Jenkinsfile в декларативном синтаксисе, требование здесь: если заданные переменные среды не совпадают, этап конвейера должен отображаться как «Aborted», но статус сборки может быть Aborted или нестабильным, в Jenkins онлайн документация и генератор фрагментов видели следующий стиль
catchError(buildResult: 'ABORTED', stageResult: 'ABORTED') {
// some block
}
catchError не служит моей цели, так как он подходит для использования, когда сценарий внутри сцены не возвращает true или если есть ошибка выполнения, хотя по умолчанию , когда условие в декларативном синтаксисе Jenkins является подходящим, Jenkins не позволяет устанавливать результат этапа на «ABORTED»
when {
expression {
SCM_BRANCH_NAME ==~ /(master|QA)/
}
expression{
ENVIRONMENT ==~ /(QA)/
}
allOf{
environment ignoreCase: true,name: 'PRODUCT_NAME' , value: 'PRODUCT-1'
}
}
Просмотрите образец файла Jenkins ниже, используя формат if и else Образец файла Jenkins
pipeline {
agent {
node {
label 'master'
}
}
environment{
ENVIRONMENT = "QA"
PRODUCT_NAME = "PRODUCT-1"
SCM_BRANCH_NAME = "master"
}
stages{
stage('Testing-1') {
when{
expression{
ENVIRONMENT ==~ /(QA)/
}
}
steps {
script {
if (PRODUCT_NAME == PRODUCT-1){
sh """
echo "Reached Here ${ENVIRONMENT} - ${PRODUCT_NAME} - ${SCM_BRANCH_NAME}"
// do testing for product 1
"""
}
else{
stageResult = 'ABORTED'
echo "PRODUCT not Available for Testing"
}
}
}
}
stage('Testing-2'){
steps{
sh '''
echo "Reached Second Stage"
'''
}
}
}
}
Любые предложения о том, как реализовать сценарий, в котором условия не выполнено, установите stageResult как Abort, любые предложения либо с помощью плагина o r с образцом нотации скрипта приветствуется
Спасибо