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

如何在Jenkins种子Job中设置agent none替代指定节点

解决自由风格Job实现Jenkins流水线agent none的等效设置问题

要让你的自由风格Job实现和流水线agent none一样的效果(在Jenkins控制器/主节点运行,不占用执行器),需要做以下两处修改:

  • 清除原来指定的节点标签
  • 添加「在控制器上运行」的专属属性

修改后的核心代码片段如下:

def jenkins = Jenkins.getInstance()

// 创建文件夹部分保持不变
def projectFolder = new Folder(jenkins, 'system')
projectFolder.save()
def jobsFolder = new Folder(projectFolder, 'jobs')
jobsFolder.save()

// DSL构建步骤部分保持不变
def builder = new ExecuteDslScripts()
builder.setTargets('jobs/**/*.groovy')

// 创建Job部分修改关键配置
def job = jobsFolder.createProject(FreeStyleProject, 'import-build-jobs')
job.addProperty(
    new ParametersDefinitionProperty(
        [new StringParameterDefinition('Project', 'cicdproj', 'Git project'),
         new StringParameterDefinition('Repository', 'seed-jobs', 'Git repository'),
         new StringParameterDefinition('Branch', 'origin/master', 'Branch in repository')]
    )
)
job.scm = new GitSCM(GitSCM.createRepoList('ssh:....git', 'ssh-key'),
                     [new BranchSpec('origin/main')],
                     false,
                     null,
                     null,
                     null,
                     null)

// 1. 清除节点标签设置(替代原来的setAssignedLabel)
job.setAssignedLabel(null)

// 2. 添加「在控制器上运行」属性,对应流水线的agent none
job.addProperty(new RunOnControllerProperty())

job.getBuildersList().add(builder)
job.save()

关键说明:

  • job.setAssignedLabel(null):彻底清除之前指定的sytem标签,避免Job尝试寻找匹配标签的构建节点
  • new RunOnControllerProperty():这个属性会让自由风格Job直接在Jenkins控制器(主节点)运行,不需要占用执行器,完全等效于流水线中的agent none设置

这样修改后,即使主节点的执行器数量设为0,这个Job也能正常运行,和你提到的纯Groovy流水线Job表现一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:15:05