Как запустить вызвать другую работу вне конвейера - PullRequest
0 голосов
/ 11 октября 2018

У меня есть три работы, которые находятся в стадии разработки.Всякий раз, когда кто-либо терпит неудачу из-за внутренней блокировки учетной записи, они должны запускать действие после сборки. В действии сборки POst я упоминал Trigger, когда сборка не удалась.Я написал тест робота, чтобы разблокировать учетную запись, и я написал сценарий оболочки, чтобы вызвать этот тест.Я вызываю этот шаблон в обоих заданиях в действии после сборки и собираю его на одном узле. Но я обнаружил, что это действие после сборки находится в состоянии ожидания, и jenkins запускает последующий проект.Как заставить Дженкинса запускать действия после сборки, если текущее задание не выполняется?

Как этого добиться?

1 Ответ

0 голосов
/ 12 октября 2018

Вы можете поиграть со свойством распространения исходного задания.

Простой пример:

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
                }

            }
        }
    }
}
...