Was ich versuche zu erreichen, ist die folgende Jobkonfiguration von Jenkins ( Ссылка ):
Haben Sie einen Satz von <project>-master
Jobs, die von
Ich habe dies erreicht, indem ich geeignete refspec angegeben, den GitHub-Webhook usw. hinzugefügt habe. Das war ziemlich einfach.
Haben Sie einen Satz von <project>-pr
Jobs, die von
Ich habe Jenkins die ersten beiden gemacht. Aber ich habe keine Möglichkeit gefunden, das # 3-Objekt aus dieser Liste zu machen, da GitHub-Plugins nicht leicht finden können, ob der Push zu einem PR-Zweig gehört oder nicht. Irgendwelche Ideen wie das gemacht werden kann?
Haben Sie einen Satz von <project>-branch
Jobs, die von ANY Push auf ANY-Zweig ausgelöst werden. Problem ist, dass ich Pushs zum Master und zu Zweigen ausschließen möchte, die für PRs verwendet werden. Ich habe Tage lang im Internet nach einer möglichen Lösung gesucht und nichts gefunden, daher wird jeder Hinweis sehr geschätzt.
Wenn Sie einen Job für die Verwendung des Github PUll Request Builder-Plugins als Empfehlung einrichten, wird er nur für einen PR ausgelöst, für die 3 aufgeführten Bedingungen.
der schwierigere .. Soweit ich weiß, gibt es für jenkins keinen einfachen Weg zu wissen, ob eine Verzweigung eine Pull-Anforderung hat oder nicht, da Pull-Anfragen spezifisch für GitHub sind und die jenkins-Verzweigungserkennung nur git verwendet.
Aus meiner Erfahrung habe ich jedoch für diese dritte Option einen <project>-feature
Job eingerichtet und ihn so konfiguriert, dass er mit jedem Zweig mit dem Präfix f/
übereinstimmt. Auf diese Weise könnten Entwickler, wenn sie möchten, dass Tests automatisch für ihre Verzweigung ausgeführt werden, aber keine Pull-Anforderung für sie öffnen möchten, einen Zweig wie f/add_a_thing
erstellen und Tests auf Pushs automatisch auslösen. Damit dies funktioniert, würde ich den Zweigspezifizierer in der Jobkonfiguration auf f/*
setzen.
Alternativ dazu ermöglicht das Git-Plugin einen regulären Ausdrucksparameter für den Zweigspezifizierer. Sie können einen regulären Ausdruck verwenden, um den Master-Zweig gezielt zu ignorieren. Die einzige Möglichkeit, pull-requested-Zweige zu ignorieren, besteht jedoch darin, dass Ihre Entwickler ein Benennungsmuster wie pr/add_a_thing
verwenden, um zu erkennen, dass dieser Zweig eine Pull-Anforderung enthält.