Wie kann man andere Projekte bedingt erstellen?
Ich habe einen ziemlich komplizierten Jenkins-Job, der eine Webanwendung erstellt, Unit-Tests durchführt und paketiert. Je nach Situation möchte ich nach Abschluss dieses Auftrags verschiedene Dinge tun. Ich habe keinen wiederverwendbaren / wartbaren Weg gefunden, dies zu tun. Ist das wirklich so oder fehlt mir etwas?
Die Optionen, die ich haben möchte, wenn mein komplizierter Job abgeschlossen ist:
Nichts tun
Starte meine Low-Risk-Change-Build-Pipeline:
kopiert meine WAR-Datei in mein Artefakt-Repositorywird für die Produktion bereitgestelltStarte meine High-Risk-Change-Build-Pipeline:
kopiert meine WAR-Datei in mein Artefakt-RepositoryBereitstellen zum TestenAkzeptanztests durchführenfür die Produktion bereitstellenIch habe keinen einfachen Weg gefunden, dies zu tun. Der einfachste, aber nicht sehr wartbare Ansatz besteht darin, drei separate Jobs zu erstellen, von denen jeder einen nachgelagerten Build startet. Dieser Ansatz macht mir aus ein paar Gründen Angst, zum Beispiel, dass Änderungen an drei statt an einer Stelle vorgenommen werden müssten. Darüber hinaus sind viele der nachgelagerten Jobs nahezu identisch. Der einzige Unterschied besteht darin, welche nachgelagerten Jobs sie aufrufen. Die Verbreitung von Arbeitsplätzen scheint zu einem nicht zu wartenden Durcheinander zu führen.
Ich habe mehrere Ansätze in Betracht gezogen, um dies als einen Job beizubehalten, aber bisher hat keiner funktioniert:
Machen Sie den Job zu einem Projekt mit mehreren Konfigurationen (https://wiki.jenkins-ci.org/display/JENKINS/Building+a+matrix+project). Auf diese Weise können Sie dem Job einen Parameter hinzufügen. Ich habe keine Möglichkeit gefunden, mit dem Schritt "Andere Projekte erstellen" auf einen Parameter zu reagieren.
Verwenden Sie das Parameterized-Trigger-Plugin (https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin). Mit diesem Plugin können Sie Downstream-Jobs basierend auf bestimmten Triggern auslösen. Die Trigger scheinen jedoch zu restriktiv zu sein. Sie basieren alle auf dem Status des Builds und nicht auf beliebigen Variablen. Hier wird keine Option angezeigt, die für meinen Anwendungsfall geeignet wäre.
Verwenden Sie das Flexible Publish-Plugin (https://wiki.jenkins-ci.org/display/JENKINS/Flexible+Publish+Plugin). Dieses Plugin hat das umgekehrte Problem wie das parametrisierte Trigger-Plugin. Es gibt viele nützliche Bedingungen, die überprüft werden können, aber es sieht nicht so aus, als ob damit begonnen werden kann, ein anderes Projekt zu erstellen. Ihre Aktionen beschränken sich auf Veröffentlichungsaktivitäten.
Verwenden Sie das Flexible Publish + Any Build Step Plugin (https://wiki.jenkins-ci.org/display/JENKINS/Any+Build+Step+Plugin). Mit dem Plug-In "Beliebiger Erstellungsschritt" können Sie dem Plug-In "Flexible Veröffentlichung" beliebige Erstellungsaktionen zur Verfügung stellen. Nachdem dieses Plugin aktiviert wurde, wurden weitere Aktionen zur Verfügung gestellt. Diese Aktionen enthielten jedoch nicht "Andere Projekte erstellen".
Gibt es wirklich keinen einfachen Weg, dies zu tun? Ich bin überrascht, dass ich es nicht gefunden habe und umso mehr, dass ich noch niemanden gesehen habe, der versucht, dies zu tun? Mache ich etwas ungewöhnliches Gibt es etwas offensichtliches, das ich vermisse?