我有一个使用uno-choice dynamic choice parameter参数化的作业触发器(上游作业),以触发多个作业(下游作业)。
触发作业参数:
并且我使用此脚本使用构建后操作 - >触发所选作业 groovy post build :
// param list of jobs to execute coming from upastream Job
def upstreamParam = "JOB_LIST_TRIGGER"
def upstreamParamFlag = "NEXT_RELEASE_TYPE"
def resolver = manager.build.buildVariableResolver
def JOBS_TO_EXECUTE = resolver.resolve(upstreamParam)
def FLAG = resolver.resolve(upstreamParamFlag )
def viewName = "test"
def jobsName = []
//only the NEXT RELEASE TYPE
def params = new hudson.model.StringParameterValue('NEXT_RELEASE_TYPE_BIS', FLAG)
// if no job selected in the parameter, will trigger all jobs in the view "test", otherwise will execute only selected jobs
if (JOBS_TO_EXECUTE == null || JOBS_TO_EXECUTE == ''){
// retrieve jobs names from jenkins view
hudson.model.Hudson.instance.getView(viewName).items.each() {
jobsName.push(it.getDisplayName())
}
// launch plugins jobs
jobsName.each(){
job = manager.hudson.getItem(it)
cause = new hudson.model.Cause.UpstreamCause(manager.build)
def paramsAction = new hudson.model.ParametersAction(params)
causeAction = new hudson.model.CauseAction(cause)
manager.hudson.queue.schedule(job, 0, causeAction, paramsAction)
}
}else{
// create a list of selected jobs in the JOB_LIST_TRIGGER param
hudson.model.Hudson.instance.getView(viewName).items.each() {
if (JOBS_TO_EXECUTE.contains(it.getDisplayName())){
jobsName.push(it.getDisplayName())
}
}
// launch only job selected in the JOB_LIST_TRIGGER param
jobsName.each(){
job = manager.hudson.getItem(it)
cause = new hudson.model.Cause.UpstreamCause(manager.build)
def paramsAction = new hudson.model.ParametersAction(params)
causeAction = new hudson.model.CauseAction(cause)
manager.hudson.queue.schedule(job, 0, causeAction, paramsAction)
}
}
在此代码中我只触发 NEXT_RELEASE_PARAMETER 到下游作业。
job1..job4,其中包含以下详细信息,以显示当前的工作详情。
echo "------------------------------------------------"
echo "------------------------------------------------"
# the current param
echo $RELEASE_VERSION
echo "------------------------------------------------"
echo "------------------------------------------------"
# the current param
echo $NEXT_RELEASE_TYPE
echo "------------------------------------------------"
echo "------------------------------------------------"
# the upstream param
echo $NEXT_RELEASE_TYPE_BIS
echo "------------------------------------------------"
echo "------------------------------------------------"
# the current param
echo $NEXT_RELEASE
echo "------------------------------------------------"
echo "------------------------------------------------"
输出是:
+ echo ------------------------------------------------
------------------------------------------------
+ echo
+ echo ------------------------------------------------
------------------------------------------------
+ echo ------------------------------------------------
------------------------------------------------
+ echo
+ echo ------------------------------------------------
------------------------------------------------
+ echo ------------------------------------------------
------------------------------------------------
+ echo Major
Major
+ echo ------------------------------------------------
------------------------------------------------
+ echo ------------------------------------------------
------------------------------------------------
+ echo
+ echo ------------------------------------------------
------------------------------------------------
+ echo ------------------------------------------------
------------------------------------------------
结果只打印上游参数但不打印当前参数,所以有没有办法在作业触发器触发下游(job1..job4)当前参数后