Подтвердить что ты не робот

"Строить периодически" с многоотраслевым трубопроводом в Дженкинсе

Я запускаю Jenkins 2 с плагином Pipeline. У меня есть проект с несколькими ветвями, где каждая ветвь (master, develop и т.д.) Имеет в корне файл Jenkins. Настройка этого была простой. Тем не менее, я не понимаю, как каждую ветвь запускать периодически (а не индексацию ветвей), даже если код не изменяется. Что мне нужно, чтобы добавить в свой файл Jenkins, чтобы включить периодические сборки?

4b9b3361

Ответ 1

Если вы используете декларативный стиль Jenkinsfile, вы используете директиву triggers.

pipeline {
    agent any
    triggers {
        cron('H 4/* 0 0 1-5')
    }
    stages {
        stage('Example') {
            steps {
                echo 'Hello World'
            }
        }
    }
}

Ответ 2

Если вы используете конвейер декларативного стиля и хотите только инициировать сборку на определенной ветке, вы можете сделать что-то вроде этого:

String cron_string = BRANCH_NAME == "master" ? "@hourly" : ""

pipeline {
  agent none
  triggers { cron(cron_string) }
  stages {
    // do something
  }
}

Найдено на Jenkins Jira

Ответ 3

Я смог найти пример, иллюстрирующий это отбрасывание старых сборников, что тоже я хотел.

Jenkinsfile в jenkins-infra/jenkins.io:

properties(
    [
        [
            $class: 'BuildDiscarderProperty',
            strategy: [$class: 'LogRotator', numToKeepStr: '10']
        ],
        pipelineTriggers([cron('H/30 * * * *')]),
    ]
)

Ответ 4

Это работает для меня:

  triggers {
    cron(env.BRANCH_NAME == 'development' ? 'H */12 * * *' : '')
  }

Подробнее в этой статье

Ответ 5

Для параметризованных периодических запусков или запланированных триггеров можно использовать следующее.

triggers{
    parameterizedCron env.BRANCH_NAME == "develop" ? '''H 03 * * * % buildSlave=vm1;testSlave=vm2;HYPERVISOR=vbox;VERSION=10.5.0.0
H 03 * * * % buildSlave=vm1;testSlave=vm2;HYPERVISOR=workstation;VERSION=10.5.0.0''' : ""
}