解决方案:在Jenkins pipeline中使用failFast
flag。
来自文档:您可以通过将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)