任何人都有一個Jenkins管道腳本,可以填充自上次成功構建變量以來的所有更改?我正在使用git和一個多分支管道作業。如何獲取自jenkins管道上次成功構建以來的更改?
回答
好吧,我設法湊齊了一些東西。我敢肯定,我可以更好地遍歷數組,但這裏就是我得到了現在:
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;
}
基於從CaptRespect我想出了使用下面的腳本在聲明管道答案:
def changes = "Changes:\n"
build = currentBuild
while(build != null && build.result != 'SUCCESS') {
changes += "In ${build.id}:\n"
for (changeLog in build.changeSets) {
for(entry in changeLog.items) {
for(file in entry.affectedFiles) {
changes += "* ${file.path}\n"
}
}
}
build = build.previousBuild
}
echo changes
這在stage->when->expression
部件中僅在某些文件被更改時才運行一個階段是非常有用的。儘管如此,我還沒有得到這個部分,我很想從中創建一個共享庫,並使它能夠傳遞一些匹配模式來檢查。
編輯:Check the docs順便說一句,以防你想深入一點。您應該可以將所有object.getSomeProperty()
調用轉換爲entry.someProperty
。
不錯。有一個github回購與一些管道的例子,如果你關心contrubute:https://github.com/jenkinsci/pipeline-examples – CaptRespect
這不是在聲明式管道風格,但腳本管道! – Lincoln
@Lincoln,是。你不能用聲明來做。您需要做的是將其包裝在腳本塊中或從共享庫中使用它。 – andsens
- 1. 如何獲得自Jenkins上次構建以來的更新日誌
- 2. 如何在Jenkins管道中獲取成功/失敗的構建信息?
- 3. 如何獲取上次成功構建時間和上次構建失敗時間Jenkins
- 4. tfs構建上次成功構建的電子郵件更改
- 5. 如何獲取上次成功構建的版本號?
- 6. Teamcity REST API:如何獲取上次成功構建的代理
- 7. Jenkins - 如果構建失敗,則部署上次成功構建的構件
- 8. 如何通過jenkins中的另一個管道作業構建並獲取管道作業的構建日誌
- 9. 將上次成功的構建上傳到Jenkins的Fabric/Crashlytics
- 10. Jenkins管道作業構建
- 11. 如何獲取自上次成功構建後使用Groovy的Jenkins提交信息?
- 12. 是否可以創建管道模板,以便Jenkins自動生成管道?
- 13. 配置果凍腳本以顯示自上次成功構建以來的所有更改
- 14. Jenkins管道:獲取從站代理的構建輸出
- 15. 在Jenkins管道中獲取build.gradle中設置的變量構建
- 16. 在Jenkins管道中立即中止構建並獲得成功狀態
- 17. atlassian jenkins:上一次成功構建的簽出修訂版
- 18. Jenkins管道 - 在GitHub PRs上自動構建觸發器?
- 19. 如何獲取在Jenkins管道中打破構建的個人列表
- 20. 如何從jenkins管道中的Artifactory buildInfo獲取構建依賴關係
- 21. 如何獲取對Jenkins中上次構建的文件的更改並通過電子郵件發送
- 22. Jenkins更新日誌顯示了對存儲庫所做的所有更改,而不是上次成功構建
- 23. 如何捕獲兩個成功構建之間的jenkins變更列表
- 24. 如何在構建成功之前重新構建Jenkins上的任務?
- 25. Jenkins構建管道調度觸發器
- 26. Liquibase:如何導出自上次導入以來的更改?
- 27. CruiseControl.NET每晚構建If修改後自上次構建標籤以來存在
- 28. Jenkins管道腳本 - 更改git分支
- 29. 自動生成使用Jenkinsfile構建gradle的構建管道
- 30. 如何禁用Jenkins管道構建的安全檢查
但是不能和[tag:jenkins-pipeline]一起工作,我猜... – StephenKing
是的,我檢查了一下,但無法弄清楚如何從JenkinsFile訪問它 – CaptRespect