我有以下Groovy腳本,它刪除給定Jenkins作業的所有版本,除了用戶提供的一個版本號想保留)。不要刪除Jenkins版本,如果它被標記爲「永久保留此版本」 - Groovy腳本刪除Jenkins版本
/*** BEGIN META {
"name" : "Bulk Delete Builds except the given build number",
"comment" : "For a given job and a given build number, delete all build except the user provided one.",
"parameters" : [ 'jobName', 'buildNumber' ],
"core": "1.409",
"authors" : [
{ name : "Arun Sangal" }
]
} END META **/
// NOTE: Uncomment parameters below if not using Scriptler >= 2.0, or if you're just pasting the script in manually.
// ----- Logic in this script takes 5000 as the infinite number, decrease/increase this value from your own experience.
// The name of the job.
//def jobName = "some-job"
// The range of build numbers to delete.
//def buildNumber = "5"
def lastBuildNumber = buildNumber.toInteger() - 1;
def nextBuildNumber = buildNumber.toInteger() + 1;
import jenkins.model.*;
import hudson.model.Fingerprint.RangeSet;
def jij = jenkins.model.Jenkins.instance.getItem(jobName);
println("Keeping Job_Name: ${jobName} and build Number: ${buildNumber}");
println ""
def setBuildRange = "1-${lastBuildNumber}"
def range = RangeSet.fromString(setBuildRange, true);
jij.getBuilds(range).each { it.delete() }
println("Builds have been deleted - Range: " + setBuildRange)
setBuildRange = "${nextBuildNumber}-5000"
range = RangeSet.fromString(setBuildRange, true);
jij.getBuilds(range).each { it.delete() }
println("Builds have been deleted - Range: " + setBuildRange)
這適用於任何Jenkins的工作。例如:如果你的Jenkins工作名是「TestJob」,並且你有15個構建,也就是構建#1在Jenkins構建15,並且你想刪除所有構建,但是保留構建#13,那麼這個腳本將刪除構建(構建#1 -12和14-15 - 即使你將任何構建標記爲「永遠保留這個構建」),只保留構建#13。現在
,我想要的是:
我應該在這個腳本改爲不刪除構建 - 如果構建標記在詹金斯爲「永遠保持這個建」 。我嘗試了這個腳本,並刪除了這個腳本,這個腳本永遠也會保留。假設我在Jenkins中使用「Build name setter plugin」,它可以給我構建我想要的名字,也就是說,不需要像構建#1或#2或#15一樣構建構建名稱,我將構建#2.75.0.1,2.75.0.2,2.75.0.3,.....,2.75.0.15(因爲我將build name/description設置爲使用某個包含2.75.0(作爲一個發佈版本值),並與實際詹金斯作業的版本號,即最後第4位後綴它 - 例如:設置名稱爲:
${ENV,var="somepropertyvariable"}.${BUILD_NUMBER}
在這種情況下,我就開始變得詹金斯構建爲2.75。 0.1到2.75.0.x(其中x是該版本的最後版本號(2.75.0))。同樣,當我將屬性rel緩解版本到下一個即2.75.1或2.76.0,然後相同的詹金斯工作將開始給我建立爲2.75.1.0,2.75.1.1,...,2.75.1.x或2.76.0.1,2.76.0.2 ,....,2.76.0.x等等。在發佈版本更改期間,比方說,我們的版本將再次從1開始(正如我上面提到的2.75.1和2.76.0版本)。在這種情況下,如果我的Jenkins作業的構建歷史記錄(顯示2.75.0.x,2.75.1.x和2.76.0.x的所有構建版本),那麼我應該在這個腳本中做什麼更改以包含第三個參數/參數。第三個參數將採用版本/版本值,即2.75.0或2.75.1或2.76.0,然後該腳本應只刪除該版本上的內部版本號(並且不應刪除其他版本的內部版本)。
這個腳本將使用Jenkins「Scriptler」插件運行正常。請參閱附件圖像輸出。如果你想從Jenkins作業運行這個腳本,那麼在Build部分下,調用Scriptler腳本,提供位置/文件名,複選框jenkins作業將使用此腳本程序腳本的參數(如上所示),就是這樣。這jenkins作業需要3個參數字符串格式 - jobName,releaseVersion和buildNumber。 –