web-dev-qa-db-fra.com

Comment écrire Pipeline pour se débarrasser des anciennes versions?

Le générateur de syntaxe groovy ne fonctionne PAS pour l'étape d'échantillonnage properties: Set Job Properties. J'ai sélectionné Discard old builds, puis 10 dans le champ Max # of builds to keep, puis Generate Groovy et rien ne s'affiche.

Version Jenkins: 2.7

62
tarabyte

Vous pouvez utiliser la méthode properties qui, imbriquée dans le BuildDiscarderProperty contient finalement la clé que vous souhaitez définir. Je n'ai toujours pas de méthode solide pour rechercher la syntaxe correcte de chaque clé. Après avoir beaucoup deviné et vérifié:

properties([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '10']]]);

Notez que cet extrait de code correspond à la syntaxe scriptée.

43
tarabyte

En ce qui concerne la syntaxe déclarative, vous pouvez utiliser le bloc options:

pipeline {
  options {
    buildDiscarder(logRotator(numToKeepStr: '30', artifactNumToKeepStr: '30'))
  }
  ...
}

Paramètres pour logRotator (from le code source ):

  • daysToKeepStr: l'histoire n'est conservée que jusqu'à ce jour.
  • numToKeepStr: seul ce nombre de journaux de construction est conservé.
  • artifactDaysToKeepStr: les artefacts ne sont conservés que jusqu'à ce jour.
  • artifactNumToKeepStr: seuls les artefacts conservés dans ce nombre de constructions sont conservés.

Plus d'informations peuvent être trouvées dans base de connaissances Cloudbees et dans la documentation pour le bloc options .

114
Vadim Kotov

Pour les pipelines scriptés, utilisez:

properties([
    buildDiscarder(logRotator(daysToKeepStr: '3', numToKeepStr: '3')),
])
11
StasKolodyuk

Jenkins a des pages de générateur de syntaxe intégrées.

Pipeline-Syntax: Générateur de fragments
<your jenkins url>/pipeline-syntax /

Pipeline-Syntax: générateur de directives
<your jenkins url>/directive-generateur /

Discard old builds exemple de Directive Generator discard old builds example

7
Chad Gilman

La réponse de Vadim n'a pas fonctionné pour moi pour une raison inconnue. Je l'ai simplifié comme suit et cela fonctionne maintenant:

options {
    buildDiscarder(logRotator(numToKeepStr: '3'))
}
5
Firdaus
  1. Pour rejeter la construction après un nombre particulier de jours:

     options {
         buildDiscarder(logRotator(daysToKeepStr: '7'))
     }
    
  2. Pour rejeter la construction après un nombre particulier de constructions:

     options {
         buildDiscarder(logRotator(numToKeepStr: '7'))
     }
    
4
Jerald Sabu M

Si vous souhaitez configurer la conservation de la construction au niveau du travail de pipeline multibranches (par rapport à tous les Jenkinsfiles individuels), cela est également possible: https://issues.jenkins-ci.org/browse/JENKINS) -30519? FocusCommentId = 325601 & page = com.atlassian.jira.plugin.system.issuetabpanels: comment-tabpanel # comment-325601

En plus de la BuildRetentionBranchProperty, vous pouvez configurer n’importe quel autre de *BranchPropertys ici: https://github.com/jenkinsci/branch-api-plugin/tree/master/src/ main/Java/jenkins/branch

Ils pourraient ne pas être affichés dans l'interface graphique cependant, du moins pour moi avec Jenkins 2.73.2. Mais vous pouvez toujours utiliser JobDSL ou modifier le config.xml directement (je ne l'ai pas dit ;-))

1
Torben Knerr

Si vous avez besoin d’un moyen de programmation (c’est-à-dire faire cela à partir d’une fonction plutôt que d’utiliser la syntaxe options{} pipeline):

def someFunction() {
  ...
  properties([
    buildDiscarder(logRotator(numToKeepStr: '5'))
  ])
}
0
David Lavender