Как я могу пропустить этап, если агент находится в автономном режиме? - PullRequest
0 голосов
/ 15 октября 2019

В моем конвейере есть этап, который проверяет, находится ли конкретный компьютер (узел) в автономном режиме. Если это так, я хочу пропустить следующий этап. Однако следующий этап настроен на использование автономного агента, поэтому он не может проверять предложение When.

Вот упрощенная версия моего конвейера:

pipeline {
    agent none

    environment {
        CONTINUERUN = true
    }

    stages {
        stage('Check Should Run') {
            agent any
            steps {
                script {
                    CONTINUERUN = false
                }
            }
        }

        stage('Skip this stage') {
            agent {
                label 'offlineAgent'
            }
            when {
                expression {
                    CONTINUERUN
                }
            }
            steps {
                //Do stuff here
            }
        }
    }
}

Когда я запускаю это, сборка просто зависает на этапе «Пропустить этот этап». Я предполагаю, потому что агент не в сети. Как я могу пропустить этот этап, когда известно, что агент находится в автономном режиме?

1 Ответ

1 голос
/ 16 октября 2019

Чтобы оценить выражение перед распределением агента, необходимо добавить директиву beforeAgent в блок при .

Соответствующая часть документации :

Оценка when перед вводом agent в stage

По умолчанию условие when для stage будет оцениваться после вводаagent для этого stage, если он определен. Однако это можно изменить, указав параметр beforeAgent в блоке when. Если для beforeAgent установлено значение true, условие when будет оцениваться первым, а agent будет вводиться только в том случае, если условие when оценивается как true.

...