You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkinsfile流水线中针对特定代理名称或标签跳过阶段?

解决方法

要让「Stuff not for p」阶段避开带有p标签的节点,同时保留u16标签的要求,你可以借助Jenkins的标签逻辑表达式,在这个特定阶段里单独指定agent规则,覆盖全局的agent设置。

修改后的代码如下:

agent { node { label 'u16' } }
stage('parallel stuff') {
    parallel {
        stage('Stuff not for p') {
            // 单独配置该阶段的agent:只选带u16但不带p的节点
            agent { node { label 'u16 && !p' } }
            steps {
                echo "My node name is ${env.NODE_NAME}"
                echo "My node labels are ${env.NODE_LABELS}"
                sh './should_not_run_on_p'
            }
        }
        // ... 其他阶段
    }
}

为什么这样有效?

Jenkins的标签表达式支持逻辑运算:

  • && 表示“同时满足”,要求节点必须带有所有指定的标签
  • ! 表示“排除”,过滤掉带有该标签的节点

u16 && !p这个表达式会精准筛选出你的m_node1和m_node2——它们都带u16标签,且没有p标签,完全符合你不让该阶段在p_node1/p_node2运行的需求。

额外选项

如果你的整个流水线都不需要在p节点上运行,也可以直接修改全局的agent标签:

agent { node { label 'u16 && !p' } }

但考虑到你还有其他并行阶段,显然在目标阶段单独设置agent是更灵活的选择。

内容的提问来源于stack exchange,提问作者flo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:50:07