Je lance Jenkins 2 avec le plugin Pipeline. J'ai configuré un projet de pipeline multi-branches dans lequel chaque branche (maître, développer, etc.) a un fichier Jenkins à la racine. La mise en place était simple. Cependant, je ne sais pas comment exécuter chaque branche régulièrement (et non l'indexation de branche), même lorsque le code ne change pas. Que dois-je mettre dans mon fichier Jenkins pour permettre des builds périodiques?
Si vous utilisez un fichier Jenkinsfile de style déclaratif, utilisez la directive triggers .
pipeline {
agent any
triggers {
cron('H 4/* 0 0 1-5')
}
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
Si vous utilisez un pipeline de style déclaratif et souhaitez uniquement déclencher la génération sur une branche spécifique, vous pouvez procéder de la manière suivante:
String cron_string = BRANCH_NAME == "master" ? "@hourly" : ""
pipeline {
agent none
triggers { cron(cron_string) }
stages {
// do something
}
}
Trouvé sur Jenkins Jira
J'ai pu trouver un exemple illustrant ceci: abandonner d'anciennes versions, ce que je voulais aussi.
Jenkinsfile
dans jenkins-infra/jenkins.io:
properties(
[
[
$class: 'BuildDiscarderProperty',
strategy: [$class: 'LogRotator', numToKeepStr: '10']
],
pipelineTriggers([cron('H/30 * * * *')]),
]
)
Cela fonctionne pour moi:
triggers {
cron(env.BRANCH_NAME == 'development' ? 'H */12 * * *' : '')
}
Voir plus dans ce article
Pour les exécutions périodiques paramétrées ou les déclencheurs planifiés, on pourrait utiliser comme suit.
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''' : ""
}