2016-06-14 8 views
7

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

3

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.

1

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"' 
    } 
}