这是我的要求,例如:
我需要构建大约10000多个软件包
所有软件包都应在x86_64 / i686 / arm平台上构建
我希望构建过程应在所有平台上并行运行
构建后将RPM软件包上传到ftp服务器
在这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中具有相同标签的代理是同一代理?
有什么主意吗?非常感谢。