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

如何在Jenkinsfile的Declarative语法中声明多个agent?

没问题!Declarative Pipeline完全支持在不同阶段指定不同的agent节点,完美对应你之前Scripted Pipeline里的写法。

核心思路

Declarative Pipeline允许你在全局层面设置默认agent,也可以在单个stage层面单独声明agent,以此实现不同步骤在不同节点执行的需求。如果你的Pipeline里每个阶段都需要不同节点,推荐全局设置agent none,然后给每个stage单独指定目标节点。

对应你需求的Jenkinsfile示例

你之前的Scripted写法是这样的:

steps{ 
    node('node1'){ 
        sh 'echo "Executing on node1"'
        // 其他node1上的步骤
    } 
    node('node2'){ 
        sh 'echo "Executing on node2"'
        // 其他node2上的步骤
    } 
}

转换成Declarative语法后,对应的写法如下:

pipeline {
    agent none // 全局不指定默认节点,强制每个stage自己声明
    stages {
        stage('Execute on Node1') {
            agent { label 'node1' } // 明确指定这个阶段在node1上运行
            steps {
                sh 'echo "Executing on node1"'
                // 这里放原来node1块内的所有步骤
            }
        }
        stage('Execute on Node2') {
            agent { label 'node2' } // 明确指定这个阶段在node2上运行
            steps {
                sh 'echo "Executing on node2"'
                // 这里放原来node2块内的所有步骤
            }
        }
    }
}

额外细节补充

  • 如果有某个阶段不需要指定特定节点,只需要随便一个可用节点,可以用agent any替代agent { label 'xxx' }。
  • 全局agent可以设为某个默认节点(比如agent { label 'default-node' }),这样没单独声明agent的stage会自动用这个默认节点,适合大部分步骤在同一个节点、少数步骤换节点的场景。
  • 每个stage的agent会创建独立的执行上下文,和Scripted里的node()块逻辑一致,步骤的工作空间、环境都会在指定节点上初始化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:20:52