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

GitLab-CI动态生成依赖前置作业的后续作业(含GitHub Actions方案)

GitLab CI 实现方案

方法1:子流水线(推荐)

前置作业收集系统状态后,生成包含后续测试任务的CI配置文件,触发子流水线执行动态任务。

stages:
  - collect
  - trigger-tests

collect data:
  stage: collect
  script:
    # 收集系统状态,比如检测可用测试环境、设备
    - echo "收集系统状态信息..."
    # 根据状态生成子流水线配置
    - |
      cat > child-pipeline.yml << EOF
      stages:
        - test
      test-env-1:
        stage: test
        script:
          - echo "执行环境1的测试任务"
      test-env-2:
        stage: test
        script:
          - echo "执行环境2的测试任务"
      EOF
  artifacts:
    paths:
      - child-pipeline.yml

trigger dynamic tests:
  stage: trigger-tests
  trigger:
    include:
      - artifact: child-pipeline.yml
        job: collect data
    strategy: depend

方法2:动态Parallel矩阵

通过前置作业将矩阵数据写入文件,后续作业读取并生成并行矩阵。

stages:
  - collect
  - test

collect data:
  stage: collect
  script:
    # 收集系统状态,生成测试矩阵数据
    - echo '["device1", "device2", "device3"]' > test-matrix.json
  artifacts:
    paths:
      - test-matrix.json

test:
  stage: test
  script:
    - echo "针对设备 $DEVICE 执行测试"
    # 这里添加对应设备的测试逻辑
  parallel:
    matrix:
      - DEVICE: $(cat test-matrix.json)
  needs: ["collect data"]
GitHub Actions 实现方案

利用作业输出变量传递动态数据,结合fromJSON解析生成测试矩阵。

name: Dynamic System Tests
on: [push]

jobs:
  collect-data:
    runs-on: self-hosted
    outputs:
      test-matrix: ${{ steps.generate.outputs.matrix }}
    steps:
      - name: 收集系统状态
        id: generate
        run: |
          # 根据系统状态生成测试目标列表
          TEST_TARGETS='["target-a", "target-b", "target-c"]'
          echo "matrix=$TEST_TARGETS" >> $GITHUB_OUTPUT

  run-tests:
    needs: collect-data
    runs-on: self-hosted
    strategy:
      matrix:
        target: ${{ fromJSON(needs.collect-data.outputs.test-matrix) }}
    steps:
      - name: 执行 ${{ matrix.target }} 的测试
        run: |
          echo "启动目标 ${{ matrix.target }} 的测试流程"
          # 添加具体测试逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:15:27