当前位置: 首页 > 面试题库 >

我可以在声明性Jenkins管道中定义多个代理标签吗?

堵飞鸿
2023-03-14
问题内容

我正在使用声明性Jenkins管道来运行我的一些构建管道,并且想知道是否可以定义多个代理标签。

我有许多构建代理与我的Jenkins挂钩,并且希望此特定管道能够由具有不同标签的各种代理(但不能由ALL代理)构建。

更具体地说,假设我有2个代理,标签为“小”,4个为标签“中”,有6个为标签“大”。现在,我有一个非常节省资源的管道,我希望仅在“小型”或“中型”代理上执行,而不在大型代理上执行,因为这可能会导致较大的构建在队列中等待不必要的长时间。

到目前为止,我所看到的所有示例都只使用一个标签。我尝试过这样的事情:

 agent { label 'small, medium' }

但是失败了。

我正在使用Jenkins Pipeline插件的2.5版。


问题答案:

您可以在Jenkins安装中看到“管道语法”帮助,并看到示例步骤“节点”参考。

您可以使用exprA||exprB

node('small||medium') {
    // some block
}


 类似资料:
  • 问题内容: 我正在尝试做这样的事情: 但这给了我这个例外: 是否可以将阶段定义为外部闭包? 问题答案: 您不能在声明式管道之外定义阶段。声明性管道的主要目的是提供经过简化且自以为是的语法,因此您可以专注于应该做什么(通过使用一些可用的步骤)而不是如何去做。 如果您对更灵活的管道实现方式感兴趣,可以选择“ 脚本化管道”方法,该语法在语法方面并不严格-仅受Groovy和CPS执行模块的限制。 您的示例

  • 问题内容: 有没有一种方法可以动态设置代理标签而不是设置为纯字符串? 该工作分为两个阶段: 第一阶段-始终在“主”代理上运行。在本阶段结束时,我将知道第二阶段应在哪个代理上运行。 第二阶段-应在第一阶段决定的代理上运行。 我的(无效)尝试如下所示: 第一个回声可以正常工作,并打印“ my_node_label”。第二阶段无法在标有“ my_node_label”的代理上运行,控制台将输出: 没有标

  • 基本上,我希望我的Jenkins文件看起来像这样: 然后我的共享库(/vars/description ptivePipeline.groovy)会像这样: 我想集中管道配置,这样我就不必担心Jenkinsfile蔓延。声明式管道可以做到这一点吗?

  • 问题内容: 我想在Jenkins声明式管道的不同阶段使用不同的JDK版本。在第一阶段中,我正在使用Java8。在第二阶段中,我正在使用Java6。如何在Jenkins的声明性管道中选择多个JDK版本? 问题答案: 您可以为每个阶段添加一个工具部分。

  • 问题内容: 我正在尝试将旧样式的基于项目的工作流转换为基于Jenkins的管道。在浏览文档时,我发现有两种不同的语法分别命名为和。例如最近(2016年底)发布的Jenkins网络语法。尽管有一个新的语法版本,Jenkins仍然也支持脚本语法。 现在,我不确定这两种类型的哪种情况最合适。语法将很快被弃用吗?詹金斯管道的未来会是这样吗? 任何可以分享有关这两种语法类型的想法的人。 问题答案: 最初创建

  • 问题内容: 尝试使用 这将失败,并显示身份验证错误。除了使用以外还有其他方法吗 withCredentials 在Jenkinsfile中签出标签 问题答案: 花完之后,几个小时就到了 在声明式管道中使用GitSCM的正确方法是 不像我在网络上的大多数地方都找到的