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

如何在GitHub Actions中按指定次数重复运行任务?

在GitHub Actions中用输入参数控制任务重复执行次数

方法一:动态生成Matrix(推荐,支持并行执行)

GitHub Actions原生Matrix不支持直接用输入参数生成动态序列,但可以通过前置Job生成动态Matrix配置,再传递给执行Job:

  1. 定义工作流输入参数amount-of-runs
  2. 添加前置Job,用脚本生成包含1到指定次数的数组,输出为Matrix变量
  3. 实际执行Job引用这个动态生成的Matrix

完整配置示例:

name: 重复执行任务
on:
  workflow_dispatch:
    inputs:
      amount-of-runs:
        description: '任务重复执行次数'
        required: true
        type: number
        default: 5
      runner-tag:
        description: '运行器标签'
        required: true
        type: string

jobs:
  # 生成动态Matrix配置
  generate-matrix:
    runs-on: ubuntu-latest
    outputs:
      reruns: ${{ steps.set-matrix.outputs.reruns }}
    steps:
      - id: set-matrix
        run: |
          # 生成从1到输入次数的数组
          RERUNS=$(seq -s ',' 1 ${{ inputs.amount-of-runs }})
          # 格式化为GitHub Actions接受的JSON数组
          echo "reruns=[${RERUNS}]" >> $GITHUB_OUTPUT

  # 使用动态Matrix执行任务
  run-repeated-task:
    needs: generate-matrix
    runs-on: ${{ inputs.runner-tag }}
    strategy:
      matrix:
        reruns: ${{ fromJSON(needs.generate-matrix.outputs.reruns) }}
    steps:
      - name: 执行重复任务
        uses: actions/some-action
        with:
          # 可传递当前执行序号,不需要可忽略
          node-version: ${{ matrix.reruns }}

方法二:步骤内串行循环(适合无需并行的场景)

如果不需要并行执行,可在单个Job的步骤里用循环实现,无需Matrix:

name: 串行重复执行任务
on:
  workflow_dispatch:
    inputs:
      amount-of-runs:
        description: '任务重复执行次数'
        required: true
        type: number
        default: 5
      runner-tag:
        description: '运行器标签'
        required: true
        type: string

jobs:
  run-repeated-task:
    runs-on: ${{ inputs.runner-tag }}
    steps:
      - name: 循环执行任务
        run: |
          for i in $(seq 1 ${{ inputs.amount-of-runs }}); do
            echo "开始第 $i 次执行"
            # 替换为实际要执行的命令或逻辑
            # 若需调用Action,建议用动态Matrix方案,循环内调用Action需额外处理失败逻辑
          done

关键说明

  • 动态Matrix方法支持并行执行,效率更高,适合大量重复场景(如200次)
  • 串行循环方法配置简单,适合小次数、无需并行的场景
  • 若不需要传递执行序号给Action,可直接去掉matrix.reruns的引用,仅利用Matrix的重复执行特性

内容的提问来源于stack exchange,提问作者Sven van den Boogaart

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 07:07:36