![](/img/trans.png)
[英]How to parameterize jenkins DSL job with pipeline script & docker-compose.yaml
[英]Multijob DSL - How to “label” each phaseJob with specific node/cloud/agent in Job DSL plugin?
我正在尝试label具有特定节点的multiJob DSL 插件中的每个phaseJob (在我的情况下,它是使用 Docker 插件创建的 docker-cloud)。
它不是用特定节点 ( docker -cloud) 标记每个阶段作业,而是用最新提到的 docker-cloud/node label 标记每个作业。
我尝试了以下示例 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 label 标记整个 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')
}
}
}
}
它使用预期的 label 创建作业,但它们不包含在多作业项目中。
我的期望是:
每个后续阶段作业都在其自己的docker -cloud 节点上运行,并自动包含在多个作业项目中,因为它无需标记即可完成。
在阅读了 Job DSL 文档一段时间后,我找到了解决方案。 实际上,只需要仔细阅读即可:)
这是一个工作示例,说明如何在 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()指令只是通过附加的行为和特性来帮助管理它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.