Używam Jenkins 2 z wtyczką Pipeline. Mam projekt Multi-branch Pipeline, w którym każda gałąź (master, develop, etc.) ma plik Jenkins w katalogu głównym. Ustawienie było proste. Brakuje mi jednak możliwości okresowego uruchamiania każdej gałęzi (a nie indeksowania gałęzi), nawet jeśli kod się nie zmienia. Co muszę umieścić w pliku Jenkins, aby umożliwić okresowe kompilacje?"Buduj okresowo" za pomocą potoku z wieloma odgałęzieniami w Jenkins
Odpowiedz
Jeśli używasz deklaratywny styl Jenkinsfile następnie użyć dyrektywy triggers.
pipeline {
agent any
triggers {
cron('H 4/* 0 0 1-5')
}
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
Udało mi się znaleźć przykład ilustrujący to odrzucające stare kompilacje, które jest również czymś, co chciałem.
Jenkinsfile
in jenkins-infra/jenkins.io:
properties(
[
[
$class: 'BuildDiscarderProperty',
strategy: [$class: 'LogRotator', numToKeepStr: '10']
],
pipelineTriggers([cron('H/30 * * * *')]),
]
)
BTW dla pierwszej nieruchomości możesz użyć symbolu 'buildDiscarder', aby uprościć składnię, ponieważ ** Powinna pojawić się składnia potoku **. –
Nie działa w skryptowanych potokach pod Jeny 2.79 (java.lang.UnsupportedOperationException: Undefined symbol 'pipelineTriggers') – Eric
Eric, spróbuj z tym dla skryptowanych potoków: 'pipelineTriggers ([[$ class:" TimerTrigger ", spec : "H 1 * * *"]]) ' – nradev
Jeśli używasz deklaratywny stylu Pipeline i tylko chcą wyzwolić opierać się na konkretnej branży można zrobić coś takiego:
String cron_string = BRANCH_NAME == "master" ? "@hourly" : ""
pipeline {
agent none
triggers { cron(cron_string) }
stages {
// do something
}
}
znaleźć na Jenkins Jira
Działa to, ale zauważ, że popełnienie i naciśnięcie pliku Jenkins nie wystarczy, aby uruchomić wyzwalacz; zadanie musi zostać uruchomione również raz ręcznie. – Cameron
Czy spust może znajdować się wewnątrz bloku scen? To znaczy. stage ("Wdrażanie do produkcji") { wyzwala { cron (MASTER_TRIGGER) } – Learner
Czy to działa w deklaratywnym pliku Jenkinsa, czy tylko w pliku JSNKN ze skryptem? – Learner
Dowolny sposób wywołania crona tylko w gałęzi' master'? Aby podać pewien kontekst: kiedy członkowie zespołu tworzą nowy oddział funkcji i zatwierdzają, plik Jenkins powinien nadal wywoływać (przez odpytywanie lub pchanie), ale to, czego nie chcę, to wywoływanie crona w tych gałęziach. – foobarto
@foobarto Zobacz odpowiedź w dalszej części: https://stackoverflow.com/a/44902622/346 – dwj