Jenkins 如何在管道外运行触发器另一个作业

Jenkins 如何在管道外运行触发器另一个作业,jenkins,jenkins-plugins,jenkins-pipeline,Jenkins,Jenkins Plugins,Jenkins Pipeline,我有三份工作正在准备中。无论何时任何人由于内部帐户锁定而失败,都必须触发构建后操作。在构建后操作中,我提到了在构建失败时触发。我编写了一个机器人测试来解锁帐户,并编写了一个shell脚本来调用这个测试。 我在构建后操作的两个作业中调用此模板,并在同一节点上构建它。但我发现此构建后操作保持在挂起状态,jenkins正在触发下游项目。如何使Jenkins在当前作业失败时运行生成后操作 如何实现这一点?您可以使用种子作业的“传播”属性 简单的例子: Map jobResults = [:] pipe

我有三份工作正在准备中。无论何时任何人由于内部帐户锁定而失败,都必须触发构建后操作。在构建后操作中,我提到了在构建失败时触发。我编写了一个机器人测试来解锁帐户,并编写了一个shell脚本来调用这个测试。 我在构建后操作的两个作业中调用此模板,并在同一节点上构建它。但我发现此构建后操作保持在挂起状态,jenkins正在触发下游项目。如何使Jenkins在当前作业失败时运行生成后操作


如何实现这一点?

您可以使用种子作业的“传播”属性

简单的例子:

Map jobResults = [:]

pipeline {

    agent any

    stages {
        stage('Build seedjob 1') {
            steps {
                script {
                    String seedJobName = 'testjob1'

                    def seedJob = build job: seedJobName, propagate: false
                    jobResults[seedJobName] = seedJob.result

                    echo "Result of ${seedJobName}: ${seedJob.result}"
                }
            }
        }

        stage('Build seedjob 2') {
            steps {
                script {
                    String seedJobName = 'testjob2'

                    def seedJob = build job: seedJobName, propagate: false
                    jobResults[seedJobName] = seedJob.result

                    echo "Result of ${seedJobName}: ${seedJob.result}"
                }
            }
        }
    }

    post {
        success { 
            script {
                if(jobResults['testjob1'] == 'FAILURE') {
                    echo "Running another job"
                    build job: 'another-job1', propagate: true
                }

                if(jobResults['testjob2'] == 'FAILURE') {
                    echo "Running another job"
                    build job: 'another-job2', propagate: true
                }

            }
        }
    }
}