Скрыть этапы, которые никогда не выполняются в декларативном конвейере - PullRequest
0 голосов
/ 20 мая 2019

У меня есть сценарий, который я хочу перенести в декларативную форму.Раньше у меня было

// Stages used in developement after each single commit
stage('Build') {
}

stage('Unit Tests') {}
// Other stages only for developer
[...]

// Stages used in test only once per day for instance
stage('Deploy') {
    if ( testJob() ) {
    } else {
        Utils.markStageSkippedForConditional(STAGE_NAME)
    }
}
[...]
// Other stages for more testing

Тогда для заданий, которые выполняются для разработчиков только 1-й этап конвейера, где виден Дженкинс.В декларативном плане у меня есть:

pipeline {
[...]

    stages {
        stage ('Build') {
            [...]
        }

        stage ('Unit Tests') {
            [...]
        }
[...]        
        stage ('Deploy') {
            when { expression { testJob() }
            [...]
        }

[...]
    }
}

Но даже для работы по разработке я вижу все этапы.Есть ли способ получить то же поведение, что и в сценарии с конвейером?

1 Ответ

0 голосов
/ 21 мая 2019

Если вы не против добавить зависимость в свой Jenkins, есть этот небольшой проект .

Он использует этот скрытый инструмент Jenkins

import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
// .....
stage('I am skipped') {
    Utils.markStageSkippedForConditional(STAGE_NAME)
}

Ипредоставляет его в виде библиотеки, поэтому после некоторой конфигурации library setup

Окончательное использование будет выглядеть как

stage('My Conditional Stage') {
    when (BRANCH_NAME != 'master') {
        echo 'Only on master branch.'
    }
}

Результат будет (даже пропущенный столбец этапа долженисчезнет, ​​если исторически не будет результатов) pipeline with skipped stage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...