2015-05-07 12 views
6

Abbiamo un codice in git e ho iniziato a configurare Jenkins per afferrare i nostri rami e provare una compilazione. Sembra che alcuni dei rami abbiano iniziato a marcire negli anni da quando sono stati costruiti l'ultima volta, dato che non riescono a completare una marca.Come posso configurare Jenkins per costruire tutti i rami tranne alcuni che escludo?

Vorrei costruire tutti i rami che si trovano, ad eccezione di un elenco di quelli esclusi. È possibile a Jenkins? Questo mi consentirà di mettere in moto le cose, quindi tornare per abilitare più rami mentre provo a risolverli.

Quello che ho provato finora

Regex con lookahead

Guardando i 'Git> Filiali di costruire' opzione ero fiducioso che avrei potuto sostituire il default '**' jolly con un :. Un po 'di scavo e il doppio controllo con http://rubular.com/ ha suggerito che quanto segue potrebbe fare ciò che volevo.

:^(?! origine/escludere \ -questo \ -branch \ .v1 | origine/esclude \ -questo \ -branch \ -too.v2) (\ S +)

Ora c'è un presupposto qui sul motore regex in esecuzione in background. Spero possa capirlo, ma se questo non spiega perché questo metodo fallisce. Sembra costruire tutti i rami, incluso quello che cerco di escludere. Forse ho solo bisogno di trovare qualche altro debug?

cercato domande simili qui

mi sono imbattuto in Jenkins/Hudson Build All Branches With Prioritization che sembrava contenere una possibile soluzione a che qualche aggiunta un'inversa un'opzione di espandersi corrispondenza https://github.com/jenkinsci/git-plugin/pull/45 suona come quello che mi serve. Purtroppo questo non sembra essere nella versione di Jenkins che ho, il che è strano come il 2011 è molto tempo fa.

Il sistema che sto usando

Ubuntu LTS 14.04. Jenkins ver. 1.611. Catene di strumenti GNU per creare codice C/C++.

+2

Questa è praticamente una [duplicato di questa domanda] (https://stackoverflow.com/questions/21314632/how-to-exclude-git -branch-da-building-in-Jenkins). Dovresti scrivere una regex che * corrisponda * solo ai rami che vuoi escludere (o più semplice sarebbe aggiungere più voci "Branch to build"), e quindi utilizzare la strategia di scelta "Inversa". –

+0

@ChristopherOrr che suona come la soluzione di cui ho bisogno. Non riuscivo a scoprire dove erano nascoste le opzioni inverse. L'ho provato e sembra non funzionare, prova ancora a costruire il ramo escluso ma persisterò. Dovresti inserire il tuo commento come risposta in modo che io possa selezionarlo o non è così che vengono gestiti i duplicati? – TafT

risposta

1

Come sull'utilizzo

^(?!.*master).*$ 

come ramo specificatore. Questa espressione regolare indica che tutti i rami non corrispondono al master.

Ripartizione:

^(?!.*master).*$ 
^    ---> beginning of string 
(?!  ) ---> negative lookahead find all that doesnt match 
    .*   ---> zero or more of 'any' character 
     master  ---> should not match master 
      .*$ ---> will match anything to the end of string 

correlati: https://stackoverflow.com/a/18709097/109305

+1

Ho affermato nella domanda che avevo provato questo e non funzionava.Forse il motore RegEx è stato aggiornato negli ultimi due anni in modo che funzioni ora. Ho finito per fare la strategia di scelta Inverse come suggerito da Christopher Orr. – TafT

Problemi correlati