Jenkinsfile - способ пропустить весь конвейер? - PullRequest
2 голосов
/ 11 апреля 2019

Я использую декларационный синтаксис для разработки сценария конвейера ( multibranch ), и я ищу способ пропустить весь конвейер, основываясь на каком-то условии без необходимости изменять when на каждом этапе.

Текущий вариант использования: я настраиваю cron для запуска сборок ночью, но я хочу, скажем, только ветви release/v1 и develop, чтобы пройти по трубопроводу ночью, а не дюжина других ветвей.

triggers {
  cron('H 21 * * 1-5')
}

// SKIP PIPELINE if triggered by timer AND branch not 'release/v1' OR 'develop'

stages {
  stage('build') {
    when { ... }
  }
  stage('UT') {
    when { ... }
  }
etc...
}

любые намеки будут оценены.

1 Ответ

2 голосов
/ 11 апреля 2019

Вы можете вкладывать этапы, если у вас есть плагин pipelining Definition-1.3 или новее ( changelog ).

Используя это, вы можете вкладывать всю свою работу в родительский этап,и используйте директиву when на родительской сцене.Все дочерние этапы будут пропущены, если родительский этап пропущен.Вот пример:

pipeline {
    agent any
    stages {
        stage('Parent') {
            when {
                //...
            }
            stages {
                stage('build') {
                    steps {
                        //..
                    }
                }
                stage('UT') {
                    steps {
                        //...
                    }
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...