2016-09-17 10 views
20

Generator składni groovy NIE działa na przykładowy krok properties: Set Job Properties. Wybrałem Discard old builds, a następnie wpisałem 10 w polu Max # of builds to keep, a następnie Generate Groovy i nic się nie wyświetla.Jak napisać Pipeline, aby odrzucić stare kompilacje?

wersja Jenkins: 2.7

+0

Działa dobrze dla mnie z Jenkinsem 2.32.3 –

Odpowiedz

29

Można użyć metody properties które zagnieżdżone w BuildDiscarderProperty ostatecznie ma klucz, który chcesz ustawić. Nadal nie mam solidnego sposobu sprawdzenia poprawnej składni każdego klucza. Po wielu zgadywaniach i sprawdzeniu:

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

Należy pamiętać, że ten fragment jest przeznaczony do skryptowej składni.

+0

To działa, ale dlaczego jest zagnieżdżony w dwóch mapach i jak to rozwiązałeś? –

+0

Patrzę na twoją odpowiedź i nie rozumiem, co ona robi. Czy zachowuje 10 ostatnich buildów lub ostatnie 10 dni? Czy mogę zachować kompilacje z ostatnich 10 tygodni lub 3 miesięcy? Proszę wyjaśnić znaczenie każdego z pól '* Str' w' strategii'. Naucz człowieka łowić ryby ... itd. –

30

chodzi o składni deklaratywnej, można użyć bloku options:

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

parametry dla logRotator (od the source code):

  • daysToKeepStr: historia utrzymuje się tylko do tego dni.
  • numToKeepStr: przechowywana jest tylko ta liczba dzienników kompilacji.
  • artifactDaysToKeepStr: artefakty są przechowywane tylko do dzisiaj.
  • artifactNumToKeepStr: tylko ta liczba buildów zawiera ich artefakty.

Więcej informacji można znaleźć w Cloudbees knowledge base oraz w the docs for options block.

+0

Dzięki za dokumentację "z kodu źródłowego". Tego właśnie szukałem (y) –

4

Odpowiedź Vadima nie zadziałała dla mnie z jakiegoś nieznanego powodu. I uproszczone go w następujący sposób i działa teraz:

options { 
    buildDiscarder(logRotator(numToKeepStr: '3')) 
} 
3
  1. odrzucić budować po określonej liczby dni:

    options { 
        buildDiscarder(logRotator(daysToKeepStr: '7')) 
    } 
    
  2. odrzucić budować po szczególności liczba buduje :

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

Nie widzę większych różnic w stosunku do mojej odpowiedzi .. –

+0

Po prostu dodano liczbę dni, aby zachować kompilacje, oprócz całkowitej liczby buildów do zachowania :) –

+0

Powinieneś użyć komentarze do tego typu rzeczy. Odpowiednio zaktualizowałem swoją odpowiedź. –

0

Jeśli chcesz skonfigurować zachowanie budować na poziomie pracy wielobranżowy rurociągu (vs we wszystkich poszczególnych Jenkinsfile S) Jest też możliwe: https://issues.jenkins-ci.org/browse/JENKINS-30519?focusedCommentId=325601&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-325601

Oprócz BuildRetentionBranchProperty można skonfigurować dowolny inny z *BranchProperty s tutaj: https://github.com/jenkinsci/branch-api-plugin/tree/master/src/main/java/jenkins/branch

Mogą one nie być wyświetlane w GUI, przynajmniej dla mnie z Jenkinsem 2.73.2. Ale nadal możesz użyć JobDSL lub zmodyfikować bezpośrednio (nie powiedziałem ;-))

+0

Czy mówisz o [Job DSL Plugin] (https://wiki.jenkins.io/display/JENKINS/Job+DSL+Plugin)? To nie to samo, co Jenkins Pipelines. Mam na myśli, że nie wszyscy, którzy używają potoków używają wtyczki Job DSL. –

+0

@VadimKotov nie, nie bardzo. Miałem problem z konfigurowaniem zachowania kompilacji w Jenkins Pipelines. Nie chciałem tego robić w Jenkinsfile, ale na poziomie pracy. Użyłem Job DSL tutaj, ale to nie ma znaczenia, ponieważ jest to tylko środek do automatyzacji konfiguracji zadań budowania. Wydaje się jednak, że w interfejsie GUI występuje błąd uniemożliwiający wyświetlenie powyższych ustawień podczas ręcznego konfigurowania zadania kompilacji. (JobDSL nie robi nic, czego nie można zrobić za pomocą interfejsu graficznego) –