Docker 多任务DSL-如何;标签";每个阶段作业在作业DSL插件中都有特定的节点/云/代理?
我正试图在带有特定节点的DSL插件中标记每个phaseJob(在我的例子中,它是使用docker插件创建的docker云) 它不是用特定节点(docker cloud)标记每个阶段作业,而是用最新提到的docker cloud/节点标签标记每个作业 我尝试了以下DSL配置示例:Docker 多任务DSL-如何;标签";每个阶段作业在作业DSL插件中都有特定的节点/云/代理?,docker,jenkins,jenkins-job-dsl,Docker,Jenkins,Jenkins Job Dsl,我正试图在带有特定节点的DSL插件中标记每个phaseJob(在我的例子中,它是使用docker插件创建的docker云) 它不是用特定节点(docker cloud)标记每个阶段作业,而是用最新提到的docker cloud/节点标签标记每个作业 我尝试了以下DSL配置示例: multiJob('example-multiple-job') { steps { phase('First') { phaseJob('JobA'){
multiJob('example-multiple-job') {
steps {
phase('First') {
phaseJob('JobA'){
label('docker-a')
shell('echo Hello World JobA!')
shell('sleep 1m')
}
phaseJob('JobB'){
label('docker-b')
shell('echo Hello World JobB!')
shell('sleep 1m')
}
}
}
}
因此,它使用docker-b标签标记整个多任务(因为它是最新的一个)
除此之外,我还尝试了以下语法:
multiJob('example-multiple-job') {
steps {
phase('First') {
job('JobA'){
label('main-docker-a')
shell('echo Hello World JobA!') //
shell('sleep 1m')
}
job('JobB'){
label('main-docker-b')
shell('echo Hello World JobB!')
shell('sleep 1m')
}
}
}
}
它创建具有预期标签的作业,但它们不包括在多个作业项目中
我的期望是:
以下每个阶段作业都在自己的docker cloud节点上运行,并自动包含在多个作业项目中,就像它没有标记一样。阅读了一段时间后,我带来了解决方案。事实上,只是需要更仔细地阅读:) 下面是一个工作示例,演示了如何在docker容器中并行执行具有自己标记的节点/docker云的多个作业
job('JobA') {
label('docker-a')
steps {
shell('echo Hello World Job-A!')
shell('sleep 1m')
}
}
job('JobB') {
label('docker-b')
steps {
shell('echo Hello World Job-B!')
shell('sleep 1m')
}
}
multiJob('example-multiple-job') {
steps {
phase('First') {
phaseJob('JobA')
phaseJob('JobB')
}
}
}
正如我所说的,jobs和其他所有符号都是单独创建的,但是multipleJob()指令只是通过附加的行为和功能帮助管理它们