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

如何在GitHub Action中避免环境配置与缓存步骤重复

用YAML锚点与别名复用重复步骤

在不依赖外部Composite Action或Reusable Workflow的前提下,你可以利用YAML原生的**锚点(Anchor)与别名(Alias)**特性,在当前ci.yml文件内直接提取并复用重复步骤,完全避免复制粘贴。

实现步骤

  1. 先在配置文件中定义重复步骤的锚点,给这段通用流程一个可引用的标识;
  2. 在每个独立任务的steps中,通过别名引用这个锚点,快速导入通用步骤,再追加各自的任务逻辑。

完整示例代码

# 定义通用初始化步骤的锚点,所有job可直接引用
setup-steps: &setup-steps
  - name: 拉取代码
    uses: actions/checkout@v4

  - name: 配置Node.js环境
    uses: actions/setup-node@v4
    with:
      node-version: '20' # 可根据项目需求调整版本
      cache: 'npm' # 自动缓存npm依赖,加速后续执行

  - name: 安装依赖
    run: npm ci # 使用ci命令确保依赖版本与package-lock.json完全一致

# 各个独立任务
jobs:
  标题校验:
    runs-on: ubuntu-latest
    steps:
      <<: *setup-steps # 引用通用初始化步骤
      - name: 执行标题校验
        run: npm run lint:titles

  代码检查:
    runs-on: ubuntu-latest
    steps:
      <<: *setup-steps
      - name: 执行代码检查
        run: npm run lint:code

  单元测试:
    runs-on: ubuntu-latest
    steps:
      <<: *setup-steps
      - name: 执行单元测试
        run: npm run test:unit

  构建:
    runs-on: ubuntu-latest
    steps:
      <<: *setup-steps
      - name: 构建项目
        run: npm run build

  集成测试:
    runs-on: ubuntu-latest
    steps:
      <<: *setup-steps
      - name: 执行集成测试
        run: npm run test:integration

关键说明

  • &setup-steps:给这段通用步骤设置锚点,相当于定义一个可复用的“模板”;
  • <<: *setup-steps:将锚点对应的步骤列表合并到当前job的steps中,实现一键导入;
  • 如果需要调整通用步骤(比如更换Node版本、修改缓存策略),只需修改锚点内的配置,所有引用该锚点的job都会同步更新;
  • 若个别job需要在通用步骤基础上做微调(比如使用不同的Node版本),可以在引用锚点后追加覆盖步骤,不会影响其他job的通用配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:25:22