Ich möchte etwas sagen können, wie:Jenkins Pipeline: Kasse explizite git commit
git branch: commitHash, credentialsId: credentialsId, url: url
Die usecase: Ich läuft parallel Build und Test auf verschiedenen Plattformen mache, und wollen sicherstellen, jeder der bekommt gleicher Code Es ist C++ und wir bauen auf separaten Plattformen auf und bauen darauf auf.
Wenn ich die oben tun, ist es nicht - der zugrunde liegende Code übernimmt eigentlich die gegebene Zweig ein Zweig ist, oder Sie bekommen so etwas wie:
[Linux64 Build] > git rev-parse origin/e4b6c976a0a986c348a211579f1e8fd32cf29567^{commit} # timeout=10
[Pipeline] [Linux64 Build] }
[Pipeline] [Linux64 Build] // dir
[Pipeline] [Linux64 Build] }
[Pipeline] [Linux64 Build] // node
[Pipeline] [Linux64 Build] }
[Linux64 Build] Failed in branch Linux64 Build
Ich habe auf diese Frage gesehen Variationen vor gefragt, obwohl keine tatsächlichen Antworten - nur Vorschläge, die den Quellcode stattdessen verstauen, usw. Nicht wirklich, was ich suche.
Die Dokumentation schlägt vor, dass es möglich sein sollte, explizite Commit-Hashes zu geben, möglicherweise mit Hilfe von Verzweigungen, aber ich kann die Syntax nicht herausfinden und kann keine Beispiele finden. Wenn ich es mache, bekomme ich den Meisterzweig, denke ich - in unserem Setup funktioniert Master nicht.
Bisher war die einzige Lösung, die ich gefunden habe war, den Zweig und dann explizit aufrufen git zur Kasse das bekommen begehen:
git branch: branch, credentialsId: credentialsId, url: url
sh 'git checkout ' + commitHash
(wo Zweig ist der Zweig Ich habe ursprünglich den Hash für an der obere Teil der Arbeit geleistet. Es funktioniert, ist aber nicht das sauberste.
Wer einen besseren Weg bekam?
Siehe Anmerkungen von 2017.07.12 und 2017.07.13 in [JENKINS-31826] (https://issues.jenkins-ci.org/browse/JENKINS-31826) –