2016-06-14 29 views
7

Ora che il tipo di lavoro Pipeline Multibranch è scaduto, c'è qualche motivo per utilizzare più il tipo di lavoro Pipeline semplice? Anche se oggi hai solo una filiale, è probabilmente saggio prevedere la possibilità di più filiali in futuro, e quindi quale sarebbe la motivazione per usare il tipo di lavoro Pipeline per la tua pipeline Jenkins e sempre usando il tipo di lavoro Pipeline Multibranch, partendo dal presupposto che stai memorizzando il tuo Jenkinsfile in SCM? Esiste una parità di funzionalità tra i due tipi di lavoro ora?Lavoro Multibranch Pipeline vs Pipeline

risposta

3

In una situazione CI/CD, potrebbe non essere consigliabile inviare ogni ramo all'ambiente di destinazione. L'utilizzo della pipeline e la specifica di un singolo ramo consentono di filtrare e inviare solo/master agli ambienti di gestione o di produzione. Multibranch sarebbe utile per inviare qualsiasi modifica su qualsiasi ramo specifico per un ambiente di test.

D'altra parte, se il processo QA/AutomatedTesting è sufficientemente completo, il rischio con l'invio di qualsiasi filiale alla produzione potrebbe essere accettabile.

1

Nella mia esperienza con le pipeline multibranch, l'UNICO lato negativo è che non è possibile visualizzare le ultime colonne successo/fallimento/durata nella pagina principale di Jenkins. Mostrano solo "NA" sulla prima pagina di Jenkins poiché tecnicamente è una "cartella" di lavori secondari.

Oltre a questo non riesco a pensare a nessun altro "contro" nell'usare il multibranch.

Non sono d'accordo con l'altra risposta .... quel caso era che il multibranch invia modifiche per "qualsiasi" ramo. Questo non è necessariamente vero. Se un Jenkinsfile esiste su un ramo di funzionalità casuali, ma quel ramo non è definito nella pipeline, allora non puoi farci niente usando i condizionali if/else tipici.

Ad esempio:

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