2015-09-25 12 views
23

Sono un neofita del plug-in Jenkins Pipeline e, soprattutto, nuovo per il plug-in multi-traccia della pipeline. In una build standard ho accesso alla variabile $ GIT_BRANCH per sapere quale ramo è in costruzione. Tuttavia quella variabile non è impostata nella pipeline multibranch. Ho provato anche env.GIT_BRANCH e ho provato a passare $ GIT_BRANCH come parametro alla build. Niente sembra funzionare. Presumo che dal momento che la build sia a conoscenza del ramo in via di sviluppo (posso vedere il nome del ramo nella parte superiore dell'output della console, che c'è qualcosa che posso usare, non riesco a trovare alcun riferimento.Pipeline Jenkins Multibranch: qual è la variabile del nome del ramo?

Ecco un esempio del perché questo è importante: stiamo usando un modello gitflow, abbiamo dev, release e master branch che sono tutti usati per creare artefatti.Il ramo dev devede automaticamente, gli altri due no. feature, bugfix e hotfix: questi rami dovrebbero essere costruiti, ma non produrre un artefatto, dovrebbero solo essere usati per informare lo sviluppatore se c'è un problema con il loro codice. Ho bisogno di sapere quale ramo è stato costruito per essere eseguito i passi corretti

Qualsiasi aiuto sarebbe apprezzato

+0

la prego di aggiornare la risposta corretta, ora che è stato risolto per le persone che vengono qui tramite la ricerca? –

risposta

47

La variabile env.BRANCH_NAME contiene il nome del ramo.

Come di Pipeline Groovy Plugin 2.18, si può anche semplicemente usare BRANCH_NAME (env non è necessaria, ma ancora accettato.)

+0

Posso confermare che questo funziona per noi utilizzando i plugin 2.x – Neil

+0

Impossibile far funzionare tutto questo in un blocco di script {} all'inizio dei passaggi {}. Stampando env usando echo env.getEnvironment() ho scoperto che $ {env.BRANCH} è disponibile e funziona! –

+1

Interessante, nessuno di questi lavori per me.Scaricato tutto sotto env - non c'erano né BRANCH né BRANCH_NAME. Quando ho provato a fare riferimento a BRANCH_NAME ottengo "groovy.lang.MissingPropertyException: Nessuna proprietà di questo tipo: BRANCH_NAME per la classe: groovy.lang.Binding" Pipeline Groovy: 2.32, Jenkins 2.32, BitBucket 4.6.2, BitBucket Server Webhook per Jenkins 3.0.1 – Vroomfundel

8

Non esiste ancora una variabile dedicata per questo scopo ( JENKINS-30252). Nel frattempo si può approfittare del fatto che il nome sottoprogetto è preso dal nome del ramo, e utilizzare

env.JOB_NAME.replaceFirst('.+/', '') 

Questo ora è stato risolto, vedere Krzysztof Krasoń's answer.

+1

Grazie, mi ha fatto puntare nella giusta direzione. Ecco un po 'più di informazioni che mi hanno aiutato a ottenere ciò di cui avevo bisogno. https://issues.jenkins-ci.org/browse/JENKINS-30252 è un problema registrato contro il plugin del flusso di lavoro per questa cosa esatta. @ jesse-glick ha risposto in modo più dettagliato lì. Per riassumere: $ {env.JOB_NAME.replaceFirst ('. + /', '')} Ti darà il nome del ramo. –

+0

Grazie, incorporato nella risposta. –

+0

Inoltre, renderlo non-goloso potrebbe essere utile per coloro che mettono le barre nel loro nome di ramo. env.JOB_NAME.replaceFirst ('. +? /', '') –