2016-07-17 13 views
3

Ich habe einen Standard Jenkins Job, der für jede Pull Anforderung/Commit ausgelöst werden muss, die zu einem der x Repositories hinzugefügt wurde, die ich zu den verschiedenen SCM Plugins hinzugefügt habe in der Konfiguration.track multiple github repo bei commit/pull Anfrage um einen jenkins Job zu erstellen

Gibt es eine Möglichkeit, alle Repos mit einem Haken zu versehen, so dass der Job bei einer Pull-Anforderung an eines der Repos den spezifischen Repo erstellt, an dem die Pull-Anforderung erfolgte?

Dies wäre hilfreich, da ich keinen Job pro Repo brauche, wenn ich einen Job für alle Repos haben kann.

Antwort

3

Wenn Sie set your Jenkins url in the webhooks and services of your various GitHub repos, Jenkins wird von diesem Webhook aufgerufen werden.

Aber die Jenkins GitHub plugin wird nur den Job auslösen, wo "Github project" das Recht [email protected]:Person/Project.git Repo hat.

Eine mögliche Abhilfe wäre:

  • auf GitHub ein Elternteil Repo veröffentlichen, die alle andere, die als submodules erklärt;
  • Setzen Sie einen anderen Webhook auf diese anderen Repos, um einen git submodule update --remote innerhalb des Parent Repo auszulösen (um alle Submodule zu aktualisieren gitlinks SHA1, special entries in the index) und schieben Sie diesen Parent Repo zurück zu GitHub;
  • haben einen Jenkins-Job, der (über das GitHub-Plugin und seinen Webhook) diesen einzigen GitHub-Parent-Repo überwacht;
  • haben einen Build-Schritt, der compares GIT_COMMIT and GIT_PREVIOUS_COMMIT, um zu bestimmen, welche Unterordner - Submodul - gerade geändert hat, und starten Sie einen Build nur auf diese oder diese Unterordner.
0

Es ist möglich mit Jenkins Pipelines.

Sie können eine beliebige Anzahl von SCM-Positionen über den integrierten Checkout-Schritt angeben. In diesem Fall würde Jenkins "wissen", dass es die Pipeline nach der Änderung in einem der Quell-Repositories neu erstellen muss. Git-Hooks sollten aktiviert werden, um es natürlich zu ermöglichen.