【发布时间】:2019-01-02 08:03:14
【问题描述】:
我想在“hyp-z”和“hyp-x”构建节点上触发 Jenkins 作业。我试着这样写,但得到“没有标签为‘hyp-x&&hyp-z’的节点”
node ('hyp-z&&hyp-x') {
// write something here
}
我做错了什么,确切的工作格式是什么?
【问题讨论】:
标签: jenkins build jenkins-pipeline jenkins-job-builder
我想在“hyp-z”和“hyp-x”构建节点上触发 Jenkins 作业。我试着这样写,但得到“没有标签为‘hyp-x&&hyp-z’的节点”
node ('hyp-z&&hyp-x') {
// write something here
}
我做错了什么,确切的工作格式是什么?
【问题讨论】:
标签: jenkins build jenkins-pipeline jenkins-job-builder
我尝试了两种方法
def labels = ["hyp-x", "hyp-z"]
def builders = [:]
for (x in labels) {
def label = x
builders[label] = {
node(label) {
// build script
}
}
}
parallel builders
上面的代码在 Jenkinsfile 中按预期工作,但我看到两个构建都是在一个常见的工作中触发的,并且日志看起来很笨拙。所以我尝试了下面的第二种方法
创建了Jenkinsfile.x和Jenkinsfile.z,每个文件代表x和z平台构建。
【讨论】:
这在这种形式中是不可能的。 && 表达式用于缩小某些功能的节点池。 例如我想在标签为 UBUNTU 和 DOCKER 的节点上运行。 而不是在具有这些标签的两个不同节点上运行。
您可以使用并行块来做您想做的事。 如果您使用的是声明式语法,请参阅这篇文章 https://jenkins.io/blog/2017/09/25/declarative-1/ 或这里为脚本 https://jenkins.io/doc/book/pipeline/jenkinsfile/#parallel-execution
【讨论】: