jenkins - 如何在 Jenkins 的动态管道中使用 failFast
问题描述
我有具有动态并行阶段的管道,如果任何阶段失败,我希望我的管道快速失败。我尝试添加 failFast: true 但我的管道卡在“在 ABC 阶段失败”。
stage("Deploy") {
steps {
script {
def stages = createStages("Name", "Project")
fastFail: true
for (stage in stages) {
parallel stage
}
}
}
}
解决方案
解决方案:在 Jenkins 管道上使用failFast
标志。
来自文档:
failFast
您可以通过将true 添加到包含并行的阶段来强制您的并行阶段在其中一个失败时中止。
请注意,如果代理节点在每个作业中启动,所有作业都将被触发并退出(如果一个失败)(如果管道中的作业“a”失败但作业“b”仍在寻找节点但尚未启动,它将继续 - [这是一个极端情况])。
示例-选项包括:
1 .在您的选项管道中使用 parallelsAlwaysFailFast 方法:
pipeline {
agent any
options {
parallelsAlwaysFailFast()
}
stages {
stage('Non-Parallel Stage') {
steps {
echo 'This stage will be executed first.'
}
}
stage('Parallel Stage') {
when {
branch 'master'
}
parallel {
stage('Branch A') {
agent {
label "for-branch-a"
}
steps {
echo "On Branch A"
}
}
stage('Branch B') {
agent {
label "for-branch-b"
}
steps {
echo "On Branch B"
}
}
stage('Branch C') {
agent {
label "for-branch-c"
}
stages {
stage('Nested 1') {
steps {
echo "In stage Nested 1 within Branch C"
}
}
stage('Nested 2') {
steps {
echo "In stage Nested 2 within Branch C"
}
}
}
}
}
}
}
2.并行使用前使用failFast true
stage('Parallel Stage') {
when {
branch 'master'
}
failFast true
parallel {
3.在地图中配置作业并在failFast属性开启的情况下执行。
jobsList = [
{job: 'jobA', parameters: [booleanParam(name: 'flag', value: true)]},
{job: 'jobB', parameters: [booleanParam(name: 'flag', value: true)]}
]
jobsList.failFast = true
parallel(jobsList)
推荐阅读
- javascript - 如何获取使用 Javascript 检查的所有复选框 ID?
- ios - 用于保存自定义数据类型的 Swift UserDefaults:当我重新运行应用程序并添加新数据时,保存的数据会消失
- javascript - 量角器:如何从多行的多个单元格中检索数据?
- python - 如何通过 cv2 python 降低轮廓的复杂性?
- python - pandas date_range 错误“ValueError:三个参数中:开始,结束和句点,必须指定两个”
- docker - 通过 requirements.txt 中的部署令牌从 docker 安装私有 gitlab 存储库
- python - Python:从 800 万行文件中读取并存储到单独文件中的程序的效率
- algorithm - 算法。将两个 n 位二进制数相加。这个问题的循环不变量是什么?
- java - Spring认证过程失败
- python - Python 程序 - 将人的体重从磅转换为公斤 - 1