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

如何根据事件类型适配GitHub Actions矩阵测试策略?

解决方案

当然可以在同一个Workflow里实现这个需求,核心是利用GitHub Actions的条件表达式结合fromJSON函数,根据触发事件动态生成测试矩阵,无需拆分Workflow。

修改后的完整Workflow配置

name: Python tests
on:
  push:
    branches:
      - dev
  pull_request:
  release:
    types: [published]

jobs:
  pytest:
    strategy:
      matrix:
        # 根据触发事件动态切换Python版本集合
        python-version: ${{ fromJSON(github.event_name == 'release' && '["3.7", "3.8", "3.9", "3.10", "3.11"]' || '["3.7", "3.11"]') }}
        os: [ubuntu-20.04, ubuntu-22.04]
    runs-on: ${{ matrix.os }}
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
      
      - name: 配置Python环境 ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
      
      - name: 安装依赖
        run: |
          python -m pip install --upgrade pip
          pip install pytest
          pip install -r requirements.txt
      
      - name: 执行单元测试
        run: pytest

逻辑说明

  • 当触发事件为release(且发布状态为published)时,条件表达式判定为真,自动使用全量Python版本矩阵
  • 当触发事件是dev分支推送或Pull Request时,条件表达式判定为假,切换为精简的Python版本子集
  • 操作系统矩阵保持固定,所有场景都会覆盖ubuntu-20.04和ubuntu-22.04两种环境

这种方式既满足了日常开发场景下的轻量测试需求,又能在发布前强制运行全量验证,所有逻辑集中在同一个Workflow中,维护成本更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:30:49