Teraz, gdy rodzaj pracy Pipeline wielobranżowy dojrzał, nie ma żadnych powodów, by używać wpisz proste zadanie Pipeline dłużej? Nawet jeśli masz dziś tylko jedną gałąź, prawdopodobnie rozsądniej będzie uwzględnić w przyszłości wiele oddziałów, a więc jaka byłaby motywacja do użycia typu zadania Pipeline dla twojego Pipeline Jenkinsa vs. zawsze przy użyciu rodzaju pracy Multibranch Pipeline, zakładając, że przechowujesz swój Jenkinsfile w SCM? Czy istnieje teraz parytet między dwoma typami pracy?wielobranżowy Pipeline vs Pipeline pracy
Odpowiedz
W sytuacji CI/CD, to nie może być pożądane, aby wysłać każdy oddział w środowisku docelowym. Korzystanie z potoku i określanie pojedynczego oddziału pozwoliłoby na filtrowanie i wysyłanie tylko/wzorca do środowisk pomostowych lub produkcyjnych. Multibranch byłby przydatny do wysyłania każdej zmiany w dowolnym oddziale do środowiska testowego.
Z drugiej strony, jeśli proces QA/AutomatedTesting jest na tyle dokładny, ryzyko z wysłaniem oddział produkcja mogłaby być akceptowalne.
Z mojego doświadczenia z wielobranżowy rurociągów, jedynym minusem jest to, że nie można zobaczyć ostatnie kolumny sukces/awarii/Czas trwania na stronie głównej Jenkins. Po prostu pokazują "NA" na stronie głównej Jenkinsa, ponieważ jest to technicznie "folder" pod-zadań.
Poza tym nie mogę myśleć o jakichkolwiek innych „minusy” do korzystania wielobranżowy.
Nie zgadzam się z inną odpowiedź .... to był przypadek wielobranżowy wysyła zmiany na „any” oddział. To niekoniecznie musi być prawda. Jeśli plik Jenkinsfile istnieje w gałęzi z losowymi funkcjami, ale ta gałąź nie jest zdefiniowana w potoku, nie można po prostu nic z nią zrobić przy użyciu typowych warunków warunkowych if/else.
Na przykład:
node {
checkout scm
def workspace = pwd()
if (env.BRANCH_NAME == 'master') {
stage ('Some Stage 1 for master') {
sh 'do something'
}
stage ('Another Stage for Master') {
sh 'do something else here'
}
}
else if (env.BRANCH_NAME == 'stage') {
stage ('Some stage branch step') {
sh 'do something'
}
stage ('Deploy to stage target') {
sh 'do something else'
}
}
else {
sh 'echo "Branch not applicable to Jenkins... do nothing"'
}
}