Groovy 要执行 "How to get a parameter depend of other parameter in Hudson or Jenkins" 的脚本?
Groovy script to implement "How to get a parameter depend of other parameter in Hudson or Jenkins"?
詹金斯 v2.289.3
我正在尝试实现 Active Choices plugin discussed in one of the answers in in How to get a parameter depend of other parameter in Hudson or Jenkins,但不确定如何实现我的第二个脚本以从第一个参数获取值。
我有一个 MyFolder
作业文件夹,其中包含名为 Builders
的多管道作业,以及 master, release/*, feature/*
等分支。因此,例如 release/1.0.0
作业,文件夹中作业的全名将是 MyFolder/Builders/release%2F1.0.0
(%2F
是 /
的转义字符)。
然后我在名为 DeployBranchVersion
的同一个文件夹中创建了第二个作业,其目标是执行部署代码以部署选定的分支及其相应的成功构建号。因此,我需要将 2 个参数传递给部署代码,GIT_BRANCH
和 VERSION
.
我的第一个 Active Choices 参数使用以下脚本获取这些分支,并将选择分配给 GIT_BRANCH 参数。
Job name: MyFolder/DeployBranchVersion
Parameter name: GIT_BRANCH
Groovy script:
def gettags = "git ls-remote -h -t https://username:password@bitbucket.org/organization/myrepo.git".execute()
def branches = []
def t1 = []
gettags.text.eachLine {branches.add(it)}
for(i in branches)
t1.add(i.split()[1].replaceAll('\^\{\}', '').replaceAll('refs/heads/', '').replaceAll('refs/tags/', ''))
t1 = t1.unique()
return t1
这个 returns 我的 repo 中分支的下拉列表,所选分支被分配给 GIT_BRANCH 参数。
现在如何设置第二个 Active Choices Reactive 参数来引用上面的选择?我有以下 Groovy 代码,可在非 Active-Choice 参数设置中使用。我怎样才能修改它以在这种情况下工作? BUILD_JOB_NAME
需要引用第一个参数的 GIT_BRANCH
值?
import hudson.model.*
BUILD_JOB_NAME = "some_reference_to_GIT_BRANCH" // ??????????
def getJobs() {
def hi = Hudson.instance
return hi.getItems(Job)
}
def getBuildJob() {
def buildJob = null
def jobs = getJobs()
(jobs).each { job ->
if (job.fullName == BUILD_JOB_NAME) {
buildJob = job
}
}
return buildJob
}
def getAllBuildNumbers(Job job) {
def buildNumbers = []
(job.getBuilds()).each { build ->
def status = build.getBuildStatusSummary().message
if (status.contains("stable") || status.contains("normal")) {
buildNumbers.add("${build.displayName}")
}
}
return buildNumbers
}
def buildJob = getBuildJob()
return getAllBuildNumbers(buildJob)
我试过这样设置,效果不错。
BUILD_JOB_NAME = "MyFolder/Builders/$GIT_BRANCH"
事实证明我做对了,我只是有一个错误的第二个脚本。这是好的。我意识到 GIT_BRANCH
值中有 /
所以我不得不用等效的转义字符 %2F
.
替换它们
import hudson.model.*
BRANCH = GIT_BRANCH.replaceAll("/", "%2F")
BUILD_JOB_NAME = "MyFolder/Builders/$BRANCH"
def getJobs() {
def hi = Hudson.instance
return hi.getAllItems(Job.class)
}
def getBuildJob() {
def buildJob = null
def jobs = getJobs()
(jobs).each { job ->
if (job.fullName == BUILD_JOB_NAME) {
buildJob = job
}
}
return buildJob
}
def getAllBuildNumbers(Job job) {
def buildNumbers = []
(job.getBuilds()).each { build ->
def status = build.getBuildStatusSummary().message
if ((status.contains("stable") || status.contains("normal")) &&
build.displayName.contains("-")) {
buildNumbers.add(build.displayName)
}
}
return buildNumbers
}
def buildJob = getBuildJob()
return getAllBuildNumbers(buildJob)
詹金斯 v2.289.3
我正在尝试实现 Active Choices plugin discussed in one of the answers in in How to get a parameter depend of other parameter in Hudson or Jenkins,但不确定如何实现我的第二个脚本以从第一个参数获取值。
我有一个 MyFolder
作业文件夹,其中包含名为 Builders
的多管道作业,以及 master, release/*, feature/*
等分支。因此,例如 release/1.0.0
作业,文件夹中作业的全名将是 MyFolder/Builders/release%2F1.0.0
(%2F
是 /
的转义字符)。
然后我在名为 DeployBranchVersion
的同一个文件夹中创建了第二个作业,其目标是执行部署代码以部署选定的分支及其相应的成功构建号。因此,我需要将 2 个参数传递给部署代码,GIT_BRANCH
和 VERSION
.
我的第一个 Active Choices 参数使用以下脚本获取这些分支,并将选择分配给 GIT_BRANCH 参数。
Job name: MyFolder/DeployBranchVersion
Parameter name: GIT_BRANCH
Groovy script:
def gettags = "git ls-remote -h -t https://username:password@bitbucket.org/organization/myrepo.git".execute()
def branches = []
def t1 = []
gettags.text.eachLine {branches.add(it)}
for(i in branches)
t1.add(i.split()[1].replaceAll('\^\{\}', '').replaceAll('refs/heads/', '').replaceAll('refs/tags/', ''))
t1 = t1.unique()
return t1
这个 returns 我的 repo 中分支的下拉列表,所选分支被分配给 GIT_BRANCH 参数。
现在如何设置第二个 Active Choices Reactive 参数来引用上面的选择?我有以下 Groovy 代码,可在非 Active-Choice 参数设置中使用。我怎样才能修改它以在这种情况下工作? BUILD_JOB_NAME
需要引用第一个参数的 GIT_BRANCH
值?
import hudson.model.*
BUILD_JOB_NAME = "some_reference_to_GIT_BRANCH" // ??????????
def getJobs() {
def hi = Hudson.instance
return hi.getItems(Job)
}
def getBuildJob() {
def buildJob = null
def jobs = getJobs()
(jobs).each { job ->
if (job.fullName == BUILD_JOB_NAME) {
buildJob = job
}
}
return buildJob
}
def getAllBuildNumbers(Job job) {
def buildNumbers = []
(job.getBuilds()).each { build ->
def status = build.getBuildStatusSummary().message
if (status.contains("stable") || status.contains("normal")) {
buildNumbers.add("${build.displayName}")
}
}
return buildNumbers
}
def buildJob = getBuildJob()
return getAllBuildNumbers(buildJob)
我试过这样设置,效果不错。
BUILD_JOB_NAME = "MyFolder/Builders/$GIT_BRANCH"
事实证明我做对了,我只是有一个错误的第二个脚本。这是好的。我意识到 GIT_BRANCH
值中有 /
所以我不得不用等效的转义字符 %2F
.
import hudson.model.*
BRANCH = GIT_BRANCH.replaceAll("/", "%2F")
BUILD_JOB_NAME = "MyFolder/Builders/$BRANCH"
def getJobs() {
def hi = Hudson.instance
return hi.getAllItems(Job.class)
}
def getBuildJob() {
def buildJob = null
def jobs = getJobs()
(jobs).each { job ->
if (job.fullName == BUILD_JOB_NAME) {
buildJob = job
}
}
return buildJob
}
def getAllBuildNumbers(Job job) {
def buildNumbers = []
(job.getBuilds()).each { build ->
def status = build.getBuildStatusSummary().message
if ((status.contains("stable") || status.contains("normal")) &&
build.displayName.contains("-")) {
buildNumbers.add(build.displayName)
}
}
return buildNumbers
}
def buildJob = getBuildJob()
return getAllBuildNumbers(buildJob)