我正在使用声明式Jenkins管道来运行我的一些构建管道,并且想知道是否可以定义多个代理标签。
我有一些构建代理连接到我的Jenkins,并希望这个特定的管道能够由具有不同标签的各种代理构建(但不是由所有代理)。
更具体地说,假设我有2个标签为“small”的代理,4个标签为“medium”的代理,6个标签为“large”的代理。现在我有一个资源非常少的管道,我希望它只在“small”或“medium”大小的代理上执行,而不是在大型代理上执行,因为这可能会导致更大的构建在队列中等待不必要的长时间。
到目前为止,我看到的所有例子都只使用了一个标签。
agent { label 'small, medium' }
但它失败了。
我使用的是Jenkins管道插件的2.5版本。
5条答案
按热度按时间kiz8lqtg1#
您可以在Jenkins安装中查看“Pipeline-syntax”帮助,并查看示例步骤“node”参考。
您可以使用
exprA||exprB
:w80xi6nr2#
编辑:我误解了这个问题。这个答案是只有当你知道你想在每个阶段运行哪个特定的代理。
如果您需要多个代理,您可以声明
agent none
,然后在每个阶段声明代理。https://jenkins.io/doc/book/pipeline/jenkinsfile/#using-multiple-agents
从文档中:
wfsdck303#
下面的语法似乎对我有用:
quhf5bfb4#
如Jenkins管道文档和Vadim Kotov所述,可以在标签定义中使用运算符。
因此,在您的情况下,如果您希望在具有特定标签的节点上运行作业,声明方式如下所示:
下面是Jenkins页面中使用不同运算符的一些示例
备注
在构建这些定义时,只需要考虑以下规则/限制:
p8ekf7hl5#
创建另一个标签"small-or-medium“,其中包含6个所有代理。然后在Jenkinsfile中: