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

能否在GitHub Actions中循环调用Composite Action的uses?

解决方案

完全可以实现,GitHub Actions提供了两种简洁的方式来替代重复写三次步骤的冗余代码,下面是具体实现:

方式一:单Job内循环执行重复步骤

这是最贴合你需求的方案——只定义一次步骤,通过矩阵参数循环传递drop、restore、create,按顺序执行所有操作:

---
name: poc - AD 

on:
  workflow_dispatch
    
jobs:
  TEMPORARY_DB:       
    runs-on: ubuntu-latest
    steps:   
      - name: Composite DB Operation - ${{ matrix.action }}
        uses: mybank/DevOps/mongodocker@tmp
        with:
          action: ${{ matrix.action }}
        strategy:
          matrix:
            action: ['drop', 'restore', 'create']

关键点:

  • matrix.action里的参数列表决定了执行顺序,严格按照drop→restore→create运行
  • 每个循环会生成独立的步骤,名称自动带上当前操作类型,日志区分清晰
  • 所有操作在同一个Runner环境中执行,上下文保持一致

方式二:独立Job执行每个操作

如果需要将每个数据库操作隔离为独立的Job(比如方便单独重试某一步),可以用Job级别的矩阵,并强制串行执行:

---
name: poc - AD 

on:
  workflow_dispatch
    
jobs:
  DB_OPERATION:       
    runs-on: ubuntu-latest
    strategy:
      matrix:
        action: ['drop', 'restore', 'create']
      max-parallel: 1  # 强制按顺序执行,避免并行导致逻辑错误
    steps:   
      - name: Composite DB Operation - ${{ matrix.action }}
        uses: mybank/DevOps/mongodocker@tmp
        with:
          action: ${{ matrix.action }}

关键点:

  • max-parallel: 1确保操作严格按定义顺序执行,不会出现restore在drop完成前运行的情况
  • 每个操作是独立的Job,状态和日志单独展示,排查问题更方便

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:30:56