Multijob DSL - 如何在 Job DSL 插件中 "label" 每个具有特定 node/cloud/agent 的 phaseJob?
Multijob DSL - How to "label" each phaseJob with specific node/cloud/agent in Job DSL plugin?
我正在尝试 label 每个 phaseJob in multiJob DSL 插件与特定节点(在我的例子中,它是使用 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')
}
}
}
}
因此,它将整个 multiJob 标记为 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')
}
}
}
}
它创建了具有预期标签的作业,但它们不包含在多作业项目中。
我的期望是:
每个后续 phaseJob 都在自己的 docker-云节点上运行,并自动包含在多个作业项目中,因为它没有标记。
在阅读了 Job DSL 文档一段时间后,我找到了解决方案。其实还是多看点吧:)
这是一个工作示例,说明如何在 docker 个容器
中并行执行多个带有自己标签 node/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() 指令只是通过额外的行为和功能来帮助管理它们。
我正在尝试 label 每个 phaseJob in multiJob DSL 插件与特定节点(在我的例子中,它是使用 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')
}
}
}
}
因此,它将整个 multiJob 标记为 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')
}
}
}
}
它创建了具有预期标签的作业,但它们不包含在多作业项目中。
我的期望是:
每个后续 phaseJob 都在自己的 docker-云节点上运行,并自动包含在多个作业项目中,因为它没有标记。
在阅读了 Job DSL 文档一段时间后,我找到了解决方案。其实还是多看点吧:)
这是一个工作示例,说明如何在 docker 个容器
中并行执行多个带有自己标签 node/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() 指令只是通过额外的行为和功能来帮助管理它们。