115 votes

Comment écrire Pipeline pour jeter les anciennes constructions ?

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 et a ensuite saisi 10 dans le Max # of builds to keep et ensuite Generate Groovy et rien ne s'affiche.

Version de Jenkins : 2.7

0 votes

Cela fonctionne bien pour moi avec Jenkins 2.32.3.

252voto

Vadim Kotov Points 1310

Pour ce qui est de la syntaxe déclarative, vous pouvez utiliser la fonction options bloc :

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

Paramètres pour logRotator (de 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 : seulement ce nombre de constructions ont leurs artefacts conservés.

Vous trouverez de plus amples informations dans Base de connaissances Cloudbees et en les docs pour options bloc .

5 votes

Est-ce que cela est censé être par branche ou par pipeline ? Cela ne semble pas fonctionner dans mon environnement.

0 votes

Est-ce une pratique générale de devoir se référer au code source pour obtenir les paramètres des différentes options ? La documentation ne fait référence qu'à numToKeepStr et heureusement j'ai trouvé votre réponse ici pour trouver les autres paramètres. C'est un peu le bazar dans la façon dont ils documentent les choses. Merci quand même, vous m'avez sauvé la vie.

1 votes

Quelqu'un peut-il montrer le contexte pour mettre cette déclaration d'options buildDiscarder à l'intérieur d'un bloc d'étape (multi-pipeline) ? J'ai essayé mais ma construction échoue.

58voto

tarabyte Points 680

Vous pouvez utiliser le properties qui, imbriquée dans la méthode BuildDiscarderProperty a éventuellement la clé que vous voulez définir. Je n'ai toujours pas de moyen solide pour trouver la syntaxe correcte de chaque clé. Après beaucoup de suppositions et de vérifications :

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

Notez que cet extrait est destiné à la syntaxe des scripts.

1 votes

Cela fonctionne, mais pourquoi est-il imbriqué dans deux cartes et comment avez-vous fait ?

0 votes

Je regarde votre réponse, et je ne comprends pas ce qu'elle fait. Est-ce qu'elle conserve les 10 dernières constructions ou les 10 derniers jours ? Est-ce que je peux garder les 10 dernières semaines ou les 3 derniers mois de builds ? Veuillez expliquer la signification de chaque *Str dans le champ strategy . Apprenez à un homme à pêcher... etc.

1 votes

@AbhijitSarkar toutes les options sont décrites dans la javadoc de cette classe : github.com/jenkinsci/jenkins/blob/master/core/src/main/java/

23voto

Chad Gilman Points 36

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

Pipeline-Syntaxe : Générateur de snippets
<your jenkins url >/pipeline-syntaxe/

Pipeline-Syntaxe : Générateur de directives
<your jenkins url >/directive-generator/

Discard old builds exemple du générateur de directives discard old builds example

10voto

Jerald Sabu M Points 470
  1. Pour rejeter la construction après un certain nombre de jours :

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

     options {
         buildDiscarder(logRotator(numToKeepStr: '7'))
     }

0 votes

J'ai juste ajouté le nombre de jours pour conserver les constructions, en plus du nombre total de constructions à conserver :)

0 votes

Vous devez utiliser les commentaires pour ce type de choses. J'ai mis à jour ma réponse en conséquence.

0 votes

Je n'ai pas la réputation d'ajouter un commentaire.

6voto

Firdaus Points 51

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

options {
    buildDiscarder(logRotator(numToKeepStr: '3'))
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X