2015-05-07 6 views
6

Wir haben etwas Code in git und ich fing an, Jenkins einzurichten, um unsere Zweige zu greifen und eine Kompilierung zu versuchen. Es scheint, dass einige der Zweige in den Jahren, seit sie gebaut wurden, zu faulen begonnen haben, da sie es nicht schaffen, eine Marke zu fertigen.Wie konfiguriere ich Jenkins, um alle Zweige außer einigen wenigen zu erstellen, die ich ausschließe?

Ich möchte alle Zweige, die gefunden werden, außer einer Liste der ausgeschlossenen Zweige erstellen. Ist das in Jenkins möglich? Dadurch kann ich die Dinge zum Laufen bringen und dann zurückkommen, um weitere Zweige zu aktivieren, während ich versuche, sie zu beheben.

Was ich bisher

Regex mit Look-Ahead-

Mit Blick auf die versucht haben 'Git> Branchen zu bauen' Option Ich war zuversichtlich, dass ich die Standard '**' Wildcard ersetzen könnte mit einem :. Ein wenig über Graben und doppelte Überprüfung mit http://rubular.com/ schlug vor, dass das Folgende tun könnte, was ich wollte.

:^(?! Herkunft/ausschließen \ -einer \ -branch \ .v1 | Herkunft/ausschließen \ -einer \ -branch \ -too.v2) (\ S +)

es jetzt ist eine Annahme, hier über die Regex-Engine, die im Hintergrund läuft. Ich würde hoffen, dass es Lookahead verstehen würde, aber wenn dies nicht der Fall ist, dann erklärt das, warum diese Methode fehlschlägt. Es scheint alle Zweige zu bauen, einschließlich der, die ich ausschließen möchte. Vielleicht muss ich nur etwas mehr Debuggen finden?

Sah für ähnliche Fragen hier

ich über Jenkins/Hudson Build All Branches With Prioritization kam, die eine mögliche Lösung in diesem Teil hinzugefügt, um eine inversen Option zu enthalten schien https://github.com/jenkinsci/git-plugin/pull/45 zu verzweigen passend klingt wie das, was ich brauche. Leider scheint dies nicht in der Version von Jenkins zu sein, die ich habe, was seltsam ist, wie 2011 vor langer Zeit war.

Das System I bin mit

Ubuntu LTS 14.04. Jenkins ver. 1.611. GNU-Werkzeugketten, um C/C++ - Code zu erstellen.

+2

Das ist so ziemlich ein [Duplikat dieser Frage] (https://stackoverflow.com/questions/21314632/how-to-exclude-git Branch-von-Gebäude-in-Jenkins). Sie sollten eine Regex schreiben, die * nur * den Zweigen entspricht, die Sie ausschließen möchten (oder einfacher wäre, mehrere "Branch to build" -Einträge hinzuzufügen) und dann die "Inverse" -Auswahlstrategie verwenden. –

+0

@ChristopherOrr das klingt wie die Lösung, die ich brauche. Ich konnte einfach nicht herausfinden, wo die inversen Optionen versteckt waren. Ich habe es ausprobiert und es scheint nicht zu funktionieren, versucht immer noch, den ausgeschlossenen Zweig aufzubauen, aber ich werde bestehen bleiben. Solltest du deinen Kommentar als Antwort eingeben, damit ich ihn auswählen kann oder werden die Duplikate nicht behandelt? – TafT

Antwort

1

Wie wäre es

^(?!.*master).*$ 

als Zweig Spezifizierer verwenden. Diese Regexp bedeutet, dass alle Zweige nicht mit dem Master übereinstimmen.

Aufteilung:

^(?!.*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 

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

+1

Ich erklärte in der Frage, dass ich das versucht hatte und es nicht funktionierte.Vielleicht wurde die RegEx-Engine in den letzten zwei Jahren aktualisiert, so dass sie jetzt funktioniert. Am Ende habe ich die von ChristopherOrr vorgeschlagene Strategie der inversen Wahl getroffen. – TafT

Verwandte Themen