GitHub Action 可复用工作流结合matrix矩阵使用的问题咨询
关于GitHub Actions可复用工作流
strategy配置的问题解答 结论
你的结论完全正确:使用uses关键字调用可复用工作流的Job,不支持配置strategy字段。
按照GitHub Actions的语法校验规则,调用可复用工作流的Job下只能保留needs、uses、with、secrets、if、name、permissions这几类字段,strategy、runs-on、steps等普通Job的配置字段不能和uses共存,强行添加会直接触发工作流配置校验失败。
你的矩阵链串联需求适配方案
你提到的需求不需要在调用可复用工作流的Job上配置strategy就能实现,调整下逻辑即可:
- 保留原有Job1逻辑,正常输出变更文件的JSON格式数组
- 父工作流的调度Job不需要加矩阵配置,直接把Job1输出的变更文件列表作为入参传给可复用工作流,示例写法:
job2: needs: job1 uses: ./.github/workflows/你的可复用工作流文件路径.yml with: changed-file-list: ${{ needs.job1.outputs.你的输出参数名 }} - 可复用工作流内部接收
changed-file-list入参后,在内部的Job3上配置两层矩阵即可,示例写法:
这个写法和你原来预期的「外层遍历变更文件、内层遍历第二组矩阵」的执行效果完全一致。on: workflow_call: inputs: changed-file-list: required: true type: string jobs: job3: runs-on: ubuntu-latest strategy: matrix: file: ${{ fromJSON(inputs.changed-file-list) }} your-second-matrix-param: [参数1, 参数2, 参数3] steps: # 你要执行的步骤
注意事项
如果你的变更文件数量加上内层矩阵的组合总数超过256(GitHub Actions单工作流矩阵默认最大项数),需要提前对变更文件列表做拆分,分批触发执行。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

