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

如何复用GitLab CI重复代码并拆分至独立文件执行?

GitLab CI 复用before_script与拆分Job的实现方案

完全可行,这两个需求都是GitLab CI原生支持的,下面分别给你具体实现方式:

一、提取重复before_script为可复用代码块

GitLab CI提供了两种常用的复用方式,能实现类似"函数复用"的效果:

1. 锚点(&) + 引用(*)方式(适合灵活复用或追加步骤)

先定义一个带锚点的公共模板(前缀.表示这是隐藏模板,不会被当作独立Job执行):

# 定义公共before_script模板
.common_before_script: &common_before_script
  before_script:
    - echo "执行公共初始化:拉取依赖"
    - npm install
    - echo "公共初始化完成"

然后在各个Job里直接引用:

job1:
  <<: *common_before_script  # 直接复用整个before_script块
  script:
    - npm run build:job1

job2:
  <<: *common_before_script
  # 如需在公共步骤基础上追加自定义步骤,可重写before_script并合并公共块
  before_script:
    - *common_before_script
    - echo "job2额外初始化:配置测试环境变量"
    - export ENV=test
  script:
    - npm run test:job2

2. extends关键字方式(适合整体继承)

这种方式更简洁,适合直接继承整个模板配置:

.common_before_script:
  before_script:
    - echo "公共初始化步骤"
    - apt-get update && apt-get install -y python3

job3:
  extends: .common_before_script
  script:
    - python3 job3.py

job4:
  extends: .common_before_script
  script:
    - python3 job4.py

二、拆分Job到独立文件并复用公共代码

同样可行,通过GitLab CI的include关键字引入外部配置文件,就能实现Job拆分和公共代码共享:

  1. 创建公共代码文件:新建common-ci.yml,存放公共before_script模板:
# common-ci.yml
.common_before_script: &common_before_script
  before_script:
    - echo "公共初始化逻辑"
    - ...其他重复命令
  1. 拆分Job到独立文件:分别创建job1.yml、job2.yml等文件,每个文件只写对应Job逻辑并引用公共块:
# job1.yml
job1:
  <<: *common_before_script
  script:
    - echo "执行job1任务"
  1. 主配置文件引入所有文件:修改根目录的.gitlab-ci.yml,用include引入公共文件和各个Job文件:
# .gitlab-ci.yml
include:
  - local: 'common-ci.yml'  # 引入公共代码模板
  - local: 'job1.yml'       # 引入各个Job文件
  - local: 'job2.yml'
  - local: 'job3.yml'
  - local: 'job4.yml'

这样所有拆分的Job文件都能正常使用公共定义的before_script块,配置结构也会更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:42:05