Jenkins中agent直接配label与嵌套node配置的适用场景区别
Jenkins两种agent定义写法的适用场景
两种写法的核心区别:第一种agent { label 'something' }是第二种完整node块写法的语法糖,仅用于快速指定agent节点标签的场景,无额外配置需求时二者可以通用,以下是必须选择某一种写法的特定场景:
必须使用第二种带node块写法的场景
当你需要配置除label之外的node专属参数时,只能选择完整node块写法,常见配置需求包括:
- 指定自定义工作目录:配置
customWorkspace参数修改默认工作路径 - 配置节点重用规则:配置
reuseNode参数控制同一条流水线的多个stage是否复用当前节点实例 - 配置仅作用于该节点的专属环境变量
- 其他需要针对节点做的特殊参数配置
必须使用第一种简化写法的场景
仅当你需要指定顶级流水线的agent为任意可用节点(不绑定固定标签)时,只能用简化写法agent any,该效果无法用node块等效实现;如果是指定固定标签且无其他配置的场景,两种写法没有强制要求,可根据个人/团队代码风格偏好选择。
写法1示例
agent { label 'something' }
写法2示例
agent { node { label 'something' // 额外参数仅能放在node块内 customWorkspace '/opt/jenkins/workspace/my-custom-project' reuseNode true } }
内容的提问来源于stack exchange,提问作者Manuel Jordan
相关产品推荐
相关产品推荐

