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

GitHub Actions中与GitLab的extends关键字等效的功能是什么?

从GitLab迁移到GitHub Actions:实现类似extends的工作流复用

GitHub Actions没有直接对应GitLab extends的关键字,但有几种成熟方案可以实现相同的功能复用需求,针对你需要统一指定容器镜像和运行器标签的场景,推荐以下几种方式:

1. 复用作业(Reusable Jobs)—— 最接近GitLab extends的实现

你可以把通用的作业配置(比如运行器、容器、基础步骤)抽离到单独文件中,然后在主工作流中直接引用这个基础作业,再添加自定义步骤。

首先创建.github/workflows/reusable-jobs.yml,定义通用基础作业:

jobs:
  common-base:
    # 对应GitLab的tags,这里填你的amd64自托管运行器名称
    runs-on: amd64-self-hosted
    container:
      image: registry.gitlab.io/build-platform/imported/foundation/pro-bff/build-env:py310
    steps:
      # 这里放所有作业都需要的通用步骤,比如代码检出
      - name: Checkout code
        uses: actions/checkout@v4

然后在主工作流中引用这个基础作业,添加专属步骤:

name: Main Workflow
on: [push, pull_request]

jobs:
  build:
    # 引用基础作业的配置
    uses: ./.github/workflows/reusable-jobs.yml#jobs/common-base
    steps:
      - name: Install dependencies
        run: pip install -r requirements.txt
      - name: Build project
        run: python build.py

  test:
    uses: ./.github/workflows/reusable-jobs.yml#jobs/common-base
    steps:
      - name: Run unit tests
        run: pytest tests/

2. 全局默认配置(Defaults)—— 适合全工作流统一配置

如果所有作业都需要相同的容器和运行器,可以在工作流根级别设置defaults,所有作业会自动继承这些配置,无需重复编写。

name: Main Workflow
on: [push, pull_request]

defaults:
  # 全局指定运行器(对应GitLab的tags)
  runs-on: amd64-self-hosted
  # 全局指定容器镜像
  container:
    image: registry.gitlab.io/build-platform/imported/foundation/pro-bff/build-env:py310

jobs:
  build:
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Install dependencies
        run: pip install -r requirements.txt
      - name: Build
        run: python build.py

  test:
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Run tests
        run: pytest tests/

如果某个作业需要特殊配置,直接在作业内重新定义runs-on或container即可覆盖全局默认:

jobs:
  special-job:
    runs-on: ubuntu-latest
    container:
      image: custom-image:latest
    steps:
      - name: Execute special task
        run: echo "Running in custom environment"

3. 复合动作(Composite Actions)—— 适合步骤级复用

如果需要复用的是一组重复步骤(而非作业级的容器/运行器配置),可以封装成复合动作,比如把代码检出、Python环境配置等通用步骤打包:

创建.github/actions/common-setup/action.yml:

name: 'Common Setup'
runs:
  using: 'composite'
  steps:
    - name: Checkout code
      uses: actions/checkout@v4
      shell: bash
    - name: Verify Python version
      run: python --version
      shell: bash

然后在作业中调用:

jobs:
  build:
    runs-on: amd64-self-hosted
    container:
      image: registry.gitlab.io/build-platform/imported/foundation/pro-bff/build-env:py310
    steps:
      - uses: ./.github/actions/common-setup
      - name: Install dependencies
        run: pip install -r requirements.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:37:55