我的软件目前有 6 个模块,它们经历了几个阶段:编译、单元测试、集成测试、声纳分析、war 文件创建。为了提高性能并限制并发线程,我将这些阶段放在我的类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 不支持这种嵌套,所以我的想法是更改它正在运行的工作人员的舞台名称。