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

Jenkins CASC如何将Groovy脚本定义的作业组织到文件夹中?

Jenkins CASC + Job-DSL 作业文件夹组织配置示例

核心思路

通过CASC创建顶层文件夹,在Job-DSL脚本中使用路径嵌套语法将作业直接指定到目标文件夹内,完全兼容现有CASC和Job-DSL的配置风格。


1. CASC 主配置(jenkins.yaml)

先定义顶层文件夹,再配置Job-DSL加载脚本:

jenkins:
  systemMessage: "Jenkins configured via CASC"

# 创建顶层文件夹(可选,Job-DSL脚本也能自动创建)
folders:
  - name: "ProjectA"
    description: "ProjectA 所有作业根目录"
  - name: "ProjectB"
    description: "ProjectB 所有作业根目录"

# 配置Job-DSL插件,加载外部脚本并批准必要语法
unclassified:
  jobDsl:
    scriptApproval:
      approvedScripts:
        - "folder(String)"
        - "job(String)"
        - "scm(git(String, String))"
        - "steps(shell(String))"
    # 指向你的Job-DSL脚本文件路径(相对于CASC配置根目录)
    scripts:
      - file: "dsl_scripts/project_a_jobs.groovy"
      - file: "dsl_scripts/project_b_jobs.groovy"

2. Job-DSL 脚本示例(project_a_jobs.groovy)

通过文件夹路径/作业名的格式,直接将作业放入指定文件夹:

// 若CASC未创建顶层文件夹,可在此自动创建
folder('ProjectA') {
  description 'ProjectA 作业集合'
}

// 在ProjectA下创建自由风格作业
job('ProjectA/Build_Application') {
  description '构建ProjectA核心应用'
  scm {
    git('https://github.com/your-org/project-a.git', 'main')
  }
  steps {
    shell('./build.sh')
  }
}

// 创建多层嵌套文件夹+作业
folder('ProjectA/Automated_Tests') {
  description 'ProjectA 自动化测试作业目录'
}

job('ProjectA/Automated_Tests/Unit_Test_Suite') {
  description '运行ProjectA单元测试'
  steps {
    shell('./run_unit_tests.sh')
  }
}

关键注意事项

  • Job-DSL中作业路径用斜杠/分隔,层级会自动创建(无需手动创建所有子文件夹)
  • CASC的scriptApproval必须包含脚本中用到的所有DSL语法,否则脚本会被Jenkins拦截
  • 若现有Job-DSL脚本是批量生成作业,只需在作业名称前拼接目标文件夹路径即可,无需大幅修改原有逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:35:13