Jeder hat ein Jenkins-Pipeline-Skript, das alle Änderungen seit dem letzten erfolgreichen Build in einer Variablen stopfen kann? Ich benutze Git und einen Multi-Branch-Pipeline-Job.Wie erhalten Sie die Änderungen seit dem letzten erfolgreichen Build in der jenkins-Pipeline?
Antwort
Nun, ich schaffte es, etwas zusammen zu werfen. Ich bin mir ziemlich sicher, dass ich Ihnen die Arrays besser laufen kann, aber hier ist das, was ich jetzt habe:
node('Android') {
passedBuilds = []
lastSuccessfulBuild(passedBuilds, currentBuild);
def changeLog = getChangeLog(passedBuilds)
echo "changeLog ${changeLog}"
}
def lastSuccessfulBuild(passedBuilds, build) {
if ((build != null) && (build.result != 'SUCCESS')) {
passedBuilds.add(build)
lastSuccessfulBuild(passedBuilds, build.getPreviousBuild())
}
}
@NonCPS
def getChangeLog(passedBuilds) {
def log = ""
for (int x = 0; x < passedBuilds.size(); x++) {
def currentBuild = passedBuilds[x];
def changeLogSets = currentBuild.rawBuild.changeSets
for (int i = 0; i < changeLogSets.size(); i++) {
def entries = changeLogSets[i].items
for (int j = 0; j < entries.length; j++) {
def entry = entries[j]
log += "* ${entry.msg} by ${entry.author} \n"
}
}
}
return log;
}
Es gibt die Changes Since Last Success Plugin, die Ihnen dabei helfen könnte.
Basierend auf der Antwort von CaptRespect i in der deklarativen Pipeline für die Verwendung mit dem folgenden Skript kam:
Dies ist sehr nützlich in stage->when->expression
Teile, um eine Phase nur auszuführen, wenn bestimmte Dateien geändert wurden. Ich bin jedoch noch nicht an diesen Teil gekommen, ich würde gerne eine gemeinsame Bibliothek daraus erstellen und es möglich machen, einige Globbing-Muster zu übergeben, nach denen ich suchen kann.
EDIT: Check the docs BTW, falls Sie ein wenig tiefer eintauchen wollen. Sie sollten in der Lage sein, alle object.getSomeProperty()
Anrufe in nur entry.someProperty
umzuwandeln.
Nizza. Es gibt einen Github-Repo mit einigen Pipeline-Beispielen, wenn Sie daran interessiert sind: https://github.com/jenkinsci/pipeline-examples – CaptRespect
Dies ist nicht der deklarative Pipeline-Stil, sondern die Skript-Pipeline! – Lincoln
@ Lincoln, yup. Sie können es nicht deklarativ tun. Sie müssen es in einen Skriptblock einfügen oder aus einer gemeinsam genutzten Bibliothek verwenden. – andsens
- 1. Verfolgen der Änderungen seit dem letzten Speichern in Django-Modellen
- 2. VSTS Build RestAPI Abrufen von Changesets vom letzten erfolgreichen oder teilweise erfolgreichen Build
- 3. Möchten Sie fortfahren und den letzten erfolgreichen Build ausführen?
- 4. Sublime Textänderungen seit dem letzten Speichern
- 5. Anfahrt hudson den SCM diff seit dem letzten Build in den einzelnen Build Seite
- 6. MySQL - Zeige den letzten erfolgreichen Test
- 7. Git - Änderungen an der Niederlassung seit erstellt?
- 8. log4j PatternLayout Zeit seit dem letzten Log
- 9. Abrufen von Sekunden seit dem letzten Datensatz
- 10. svn - Zeit seit der letzten Zusammenführung
- 11. Git: Howto Änderungen seit dem letzten Commit in einen neuen Zweig verschieben
- 12. Automatische E-Mail die letzten Änderungen für einen bestimmten Build in Hudson
- 13. Erhalten Sie Inhalte nach dem letzten Schrägstrich
- 14. Wie man cleartool sagt, wenn die Quelle seit der letzten Baseline geändert wurde
- 15. Android check Gerät Laufzeit seit dem letzten Neustart
- 16. Datum des letzten erfolgreichen Joblaufs abrufen?
- 17. Welche Tools sind verfügbar, um festzustellen, welche .NET-Assemblys seit dem letzten Build geändert wurden?
- 18. Teamcity - Erstellen eines Git-Tags nach dem erfolgreichen Build
- 19. Kopieren Sie alle Dateien innerhalb der Lösung an einen anderen Speicherort nach dem erfolgreichen Build
- 20. Wie erhalten Sie die letzten 30 Tage der Datensätze?
- 21. Wie nie letzten erfolgreichen Build laufen aufgefordert werden, wenn Unit-Tests
- 22. So erhalten Sie die Änderungen an einem Zweig in Git
- 23. Verwenden jQuery Stern zum Menüpunkt anhängen, wenn der Inhalt der gelinkten Seite seit dem letzten Besuch
- 24. Zurücksetzen aller Änderungen nach dem letzten Festschreiben in git
- 25. Erhalten Sie die ID der letzten eingefügten Zeile ORACLE/PHP
- 26. Erhalten Sie die letzten 3 Zeichen der Zeichenfolge
- 27. Wie build_id des letzten erfolgreichen Builds in Jenkins abgerufen werden kann?
- 28. ASP.NET-Website-Seiten, die die letzten Änderungen nicht widerspiegeln
- 29. Wie erhalten Sie die Sekunden seit der Zeit von der Zeit + Datum Ausgabe von gmtime()?
- 30. Automater zu einem anderen Zweig nach einem erfolgreichen Build
Aber funktioniert nicht mit [tag: jenkins-pipeline], denke ich .. – StephenKing
Ja, ich habe das überprüft, aber konnte nicht herausfinden, wie man es von der JenkinsFile – CaptRespect