我的软件目前有6个模块,它们经历了几个阶段:编译,单元测试,集成测试,声纳分析,战争文件创建。 为了提高性能并限制并发线程,我将这些阶段放在我的类 Step 的实例中,这些实例包含有关它的依赖项的最小信息以及是否已完成。
要运行我创建的工作线程的确切数量,这些线程会完成所有工作,直到完成所有工作。
def parallelWorkers = [:]
Data.maxConcurrentBuilds.times {
parallelWorkers["Worker#${it}"] = {
Step work = getWork()
if (work == null) {
echo "Could not get initial work"
return null
}
waitUntil {
stage(work.name) {
work.run()
}
work = getWork()
return work == null
}
echo "No remaining work. Shutting down worker ${it}"
}
}
try {
stage('Parallel workers for module building') {
gitlabCommitStatus('modules') {
parallel parallelWorkers
}
}
} catch (e) {
throw e
}
现在我想知道是否有办法动态重命名这些阶段?据我所知,BlueOcean不支持这样的嵌套,所以我的想法就是改变它所运行的工作者的阶段名称。
答案 0 :(得分:1)
您必须使用“$ {}”来调用该名称,我已经完成了很多次并且它完美地运行了:
String test = 'my_stage_name'
stage("${test}") {
}
我不知道“$ {work.name}”是否有效,如果没有,你可以使用一个中间字符串来存储work.name值,然后用“$ {}”调用他。
更新:
这对我有用:
def workerNames = ['one','two','three']
def builds = [:]
workerNames.each {
builds[it] = {
stage("Worker#${it}") {
println(it)
}
}
}
stage ('test') {
parallel builds
}
结果: