我得到了列出管道的所有分支和阶段的代码
def build_jobs = [:]
build_jobs['1'] = {
node('builder'){
stage('A'){
sh 'echo 1'
printMyStage()
}
stage('B'){
printMyStage()
"error"
}
}
}
build_jobs['2'] = {
node('builder'){
printMyStage()
sh 'echo 2'
}
}
build_jobs['3'] = {
node('builder'){
stage('A'){
printMyStage()
sh 'echo 3'
}
stage('B'){
printMyStage()
}
}
}
parallel build_jobs
在运行开始时,我得到以下指纹:
[Pipeline] parallel
[Pipeline] { (Branch: 1)
[Pipeline] { (Branch: 2)
[Pipeline] { (Branch: 3)
如何访问具有分支名称的变量,以便printMyStage()函数打印它运行的分支?
对于当前代码,输出为:
Branch: 1
Branch: 1
Branch: 2
Branch: 3
Branch: 3
我还尝试使用PipelineNodeGraphVisitor(currentBuild.rawBuild),但没有成功
1条答案
按热度按时间6ljaweal1#
您可以通过未记录的
CpsThread.current().head
获取当前线程的 headFlowNode
。使用FlowNode.getEnclosingBlocks()
可以获取父块,并在某些条件下确定分支节点。包含嵌套
parallel
分支的完整脚本化管道示例:输出(由于并行性,顺序是随机的):
函数
printMyStage()
列出所有父分支的名称,如果只需要直接父分支,则使用branches[0].displayName
。