Jenkins 声明式管道并行步骤执行器



我正在将作业从多作业迁移到 Jenkins 声明式管道作业。我无法在多个执行器上运行并行步骤。

例如,在下面的管道中,我看到在运行管道时只使用了一个执行程序。

我想知道为什么只使用一个执行器。这个想法是,每个并行步骤都将初始化一个构建 docker 映像的 make 目标。

pipeline {
agent none
stages {
stage('build libraries') {
agent { label 'master' }
steps {
parallel(
"nodejs_lib": {
dir(path: 'nodejs_lib') {
sh 'sleep 110'
}
},
"python_lib": {
dir(path: 'python_lib') {
sh 'sleep 100'
}
}
)
}
}
}
options {
ansiColor('gnome-terminal')
buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '30'))
timestamps()
}
}

您可以尝试以下方式为管道作业执行并行任务:

def tasks = [:]
tasks["TasK No.1"] = {
stage ("TASK1"){    
node('master') {  
sh '<docker_build_command_here>'
}
}
}
tasks["task No.2"] = {
stage ("TASK2"){    
node('master') {  
sh '<docker_build_command_here>'
}
}
}
tasks["task No.3"] = {
stage ("TASK3"){    
node('remote_node') {  
sh '<docker_build_command_here>'
}
}
}
parallel tasks       

如果要在单个节点上执行并行任务,并且还希望两个任务具有相同的工作区,则可以使用以下方法:

node('master') { 
def tasks = [:]
tasks["TasK No.1"] = {
stage ("TASK1"){    
sh '<docker_build_command_here>'
}
}
tasks["task No.2"] = {
stage ("TASK2"){    
sh '<docker_build_command_here>'
}
}

parallel tasks       
}

相关内容

  • 没有找到相关文章

最新更新