如何在同一代理上运行多阶段,而每个阶段应在不同代理上运行

时间:2019-08-27 11:53:16

标签: jenkins-pipeline

这是我的要求,例如:

  1. 我需要构建大约10000多个软件包

  2. 所有软件包都应在x86_64 / i686 / arm平台上构建

  3. 我希望构建过程应在所有平台上并行运行

  4. 构建后将RPM软件包上传到ftp服务器

  5. 在这3个平台中的任何一个上构建失败时,不应运行上载阶段

我有的资源

手臂服务器* 3 x86_64服务器* 3 i686机器* 3

我曾尝试使用管道来运行此程序,并为任务创建构建和上传阶段。但是我最终发现,有时,构建和上载阶段将在不同的代理上运行。显然这会导致错误

管道如下所示,每个标签中都有3个代理。

pipeline {
    agent none
    parameters {
        string(defaultValue: "qwe", description: '', name: 'pname')
        string(defaultValue: "asd", description: '', name: 'options')
    }

    stages {
        stage('run build') {
            parallel {
                stage('Stage1.1') {
                    agent { label "arm-builders" }
                    steps {
                        echo "arm download source code ${params.pname} asd"
                        sleep 5
                        echo "build finished"
                    }
                }
                stage('Stage1.2') {
                    agent { label "x86-builders" }
                    steps {
                        echo "download source code"
                        sleep 10
                        echo "build finished"
                    }
                }
            }
        }
        stage('upload') {
            parallel {
                stage('Stage2.1') {
                    agent { label "arm-builders" }
                    steps {
                        echo "upload package"
                    }
                }
                stage('Stage2.2') {
                    agent { label "x86-builders" }
                    steps {
                        echo "upload package"
                    }
                }
            }
        }
    }
}

如何确保Stage1.1和Stage2.1中具有相同标签的代理是同一代理?

有什么主意吗?非常感谢。

0 个答案:

没有答案