【发布时间】:2021-01-27 14:40:04
【问题描述】:
我有一个在需要重试的特定环境中部署的逻辑。这个逻辑也有一些超时。所以我写了如下的DSL代码:
Pipeline {
stages {
stage('Promote To Stage2 Environment') {
options {
timeout(time: "${env.STAGE_TIME_OUT}", unit: "HOURS")
retry("${env.RETRY_COUNT}")
}
steps {
script {
//my logic
}
}
}
}
}
现在,我需要执行回滚操作并需要终止管道作业,以防在特定环境中进行部署时超出重试或超时。所以我修改了代码如下:
pipeline {
stages {
stage('Promote To Stage2 Environment') {
steps {
script {
try {
timeout(time: "${env.STAGE_TIME_OUT}", unit: "HOURS") {
retry("${env.RETRY_COUNT}") {
//my logic
}
}
}
} catch (err) {
//Need rollback. action to be required , in case retry exceeded or timeout happen
performRollBack('env')
error('Deployment on Stage1 failed..... Build rolled back....')
}
}
}
}
}
这是正确的方法,还是我缺少的东西。
【问题讨论】:
标签: jenkins-pipeline jenkins-groovy jenkins-job-dsl