我這樣作業:
def job = build job: job_name, parameters:
[
string(name: 'Param1', value: Value1),
string(name: 'Param2', value: Value2),
string(name: 'Param3', value: Value3),
], wait: false
return job
我使用wait: false是因為我需要同時運行幾個,然后等待它們全部完成。但在這種情況下,作業為空,因為我使用wait: false.
也許您知道同時運行多個作業并獲取其物件的其他方法嗎?
我嘗試的其他方式:
def buildsNumberStart = GetLastDockerBuildNumber(DockerBuildJobName)
def finishedJobs = overrideBranches.collect { item -> RunJobBuild(item.Tag, author, GetImageNameFromRepository(item.DockerRepository), item.Name, item.Branch, item.Repository, DockerBuildJobName)}
sleep(30)
def buildNumberFinish = GetLastDockerBuildNumber(DockerBuildJobName)
while(true)
{
if (IsAllDockerBuildJobsFinished(buildsNumberStart, buildNumberFinish, DockerBuildJobName))
{
break;
}
sleep(5)
}
for (build in GetFinishedJobs(buildsNumberStart, buildNumberFinish, DockerBuildJobName))
{
def listener = build.getListener()
build
.getEnvironment(listener)
.each
{
// HERE IS PROBLEM, I saw just environment variables that
// set on start and didn`t see that I added in pipeline
println it
}
}
}
@NonCPS
def GetFinishedJobs(buildNumbersStart, buildNumberFinish, String dockerBuildJobName)
{
return jenkins.model.Jenkins
.instance
.getItemByFullName(dockerBuildJobName)
.builds
.findAll { it.number > buildNumbersStart && it.number <= buildNumberFinish}
}
uj5u.com熱心網友回復:
我為我的案例找到解決方案https://stackoverflow.com/a/40148397/14392639 它看起來像:
def jobs = [:]
some_source.each
{
item -> jobs[some_source.Name] = build job: job_name, parameters:
[
string(name: 'Param1', value: Value1),
string(name: 'Param2', value: Value2),
string(name: 'Param3', value: Value3),
]
}
parallel jobs
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/534642.html
