Jak mogę wyzwolić kompilację innego zadania z poziomu Jenkinsfile
?
Zakładam, że to zadanie to kolejne repozytorium w tej samej organizacji github , które ma już własny plik Jenkins.
Chcę to również zrobić tylko wtedy, gdy nazwa gałęzi to master, ponieważ nie ma sensu wywoływać kolejnych kompilacji jakichkolwiek gałęzi lokalnych.
Aktualizacja:
stage 'test-downstream'
node {
def job = build job: 'some-downtream-job-name'
}
Mimo to po uruchomieniu pojawia się błąd
Nie znaleziono sparametryzowanego zadania o nazwie nazwa-zadania-downtream
Jestem pewien, że ta praca istnieje w Jenkins i znajduje się w tym samym folderze organizacji, co bieżąca. To kolejna praca, która ma swoją własną Jenkinsfile
.
Należy pamiętać, że to pytanie jest specyficzne dla wtyczki GitHub Organization, która automatycznie tworzy i utrzymuje zadania dla każdego repozytorium i gałęzi z Twojej organizacji GitHub.
build job: '../other-repo/master', wait: false
build job: '../other-repo/$BRANCH_NAME'
gdzie$BRANCH_NAME
jest zmienna środowiskowa Jenkins odnosząca się do gałęzi, w której działa projekt Multibranch?${BRANCH_NAME}
jest dostępna jako zmienna środowiskowa, wystarczy proste podstawienie łańcucha. Pamiętaj tylko, aby przełączyć się na"
z,'
aby cytować swój ciąg. np.build job: "../other-repo/${BRANCH_NAME}"
build job
: jenkins.io/doc/pipeline/steps/pipeline-build-stepOprócz wyżej wymienionych odpowiedzi: Chciałem rozpocząć zadanie z prostym parametrem przekazanym do drugiego potoku i znalazłem odpowiedź na https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow .
Więc użyłem:
źródło
build
polecenie zostało zwrócone? Jak uzyskać dostęp do BUILD_NUMBER w jednym z następujących etapów? Czy ktoś wie, gdzie udokumentowano to polecenie?build job: 'freestyle', parameters: [ string(name: 'param1', value:'test_param'), string(name:'dummy', value: "${index}")]
teraz, od jenkins.io/doc/pipeline/examples/#jobs-in-parallelbuild job: 'RunArtInTest', parameters: [[$class: 'StringParameterValue', name: 'systemname', value: systemname]]
dla mnie nie działało, ale:build job: 'RunArtInTest', parameters: [string(name: 'systemname', value: "${VALUE}")]
działałoPolecenie
build
w potoku ma wywołać inne zadania w Jenkins.Przykład na github
Zadanie musi istnieć w Jenkins i może być sparametryzowane. Jeśli chodzi o gałąź, to chyba można to przeczytać z gita
źródło
build job: 'jobname
aleNo parameterized job named jobname found
pojawia się ten błąd i zapewniam, że w folderze organizacji jest zadanie o tej nazwie na tym samym poziomie.build job: "${ORGANISATION_NAME}/${REPO_NAME}/master"
/
. Względne ścieżki są w porządku; Problem sorina polegał prawdopodobnie na tym, że powołanie do pracybuild
było pracą wielobranżową, co oznacza, że ścieżka podobnajobname
do próby zbudowania gałęzijobname
tej samej pracy; musi być../jobname/branchname
zamiast tegoMożesz użyć
build job
kroku z Jenkins Pipeline (minimalne wymaganie Jenkinsa: 2.130).Oto pełne API dla tego
build
kroku: https://jenkins.io/doc/pipeline/steps/pipeline-build-step/Jak używać
build
:job
: Nazwa kolejnego zadania do zbudowania. Może to być kolejna praca w Pipeline, ale częściej projekt dowolny lub inny.../sister-folder/downstream
/top-level-folder/nested-folder/downstream
Uruchom kolejne zadanie, używając rozgałęzienia jako parametru
W mojej firmie wiele naszych oddziałów zawiera „/”. Musisz zamienić wszystkie wystąpienia „/” na „% 2F” (tak jak pojawia się w adresie URL zadania).
W tym przykładzie używamy ścieżek względnych
Uruchom kolejne zadanie, używając numeru kompilacji jako parametru
Wyzwalaj wiele zadań równolegle
Źródło: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/
Więcej informacji na temat Parallel tutaj: https://jenkins.io/doc/book/pipeline/syntax/#parallel
Lub alternatywnie:
źródło
Użyj wtyczki tworzenia zadań do tego zadania, aby uruchomić inne zadania z pliku jenkins. Możesz dodać różne logiki do wykonania, takie jak opcje równoległe, węzłowe i agentów oraz kroki wyzwalania zadań zewnętrznych. Podałem na to przykład łatwej do czytania książki kucharskiej.
1. przykład wyzwalania zewnętrznego zadania z pliku jenkins z warunkowym przykładem:
2. przykład wyzwalania wielu zadań z pliku Jenkinsa z przykładami warunkowymi:
źródło