我正在尝试 multiJob DSL插件中的每个 phaseJob 标签,并带有特定节点(在我的情况下,这是使用Docker创建的docker-cloud插件)。
与其使用特定的节点(docker-cloud)标记每个 phaseJob ,它使用最新提到的docker-cloud / node标签标记每个作业。
我尝试了以下示例DSL配置:
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
除此之外,我还尝试了以下语法:
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')
}
}
}
}
它会创建带有预期标签的作业,但它们不包含在“多个作业”项目中。
我的期望是:
phaseJob 之后的每个对象都在其自己的docker-cloud节点上运行,并且自动执行,无需标记即可自动包含在“多个作业”项目中。
答案 0 :(得分:0)
经过一段时间的阅读,我得到了解决方案。实际上,只需要更仔细地阅读即可:)
这里是一个工作示例,说明如何在docker容器中并行执行带有其自己标记的节点/ docker-cloud的多个作业
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')
}
}
}
我不明白,作业和其他所有东西都是分开创建的,但是 multipleJob()指令仅有助于通过其他行为和功能来管理它们。