求助:GitHub Actions工作流完成后自动重启的简单实现方案
实现GitHub Actions工作流完成后自动重跑的方法
GitHub确实不允许工作流通过自身的workflow_run事件触发自己,这种配置会被平台拦截以避免无限循环。不过不用额外工作流,也能实现自动重跑——直接在当前工作流的最后一步调用GitHub API触发自身即可。
具体实现步骤
- 配置工作流权限:给工作流赋予触发工作流的权限,在
jobs块中添加permissions字段,开启actions: write权限。 - 添加触发步骤:在工作流的最后一个步骤里,用GitHub CLI或curl调用
workflow_dispatch事件,触发当前工作流。
完整配置示例
name: Suburb Automatic on: workflow_dispatch: # 保留手动触发入口 jobs: build: runs-on: ubuntu-latest permissions: contents: read actions: write # 必须权限,用于触发工作流 steps: - name: 执行原有任务 run: echo "这里是你的工作流核心任务逻辑" # 新增触发自身重跑的步骤 - name: 触发工作流重跑 if: always() # 可选:替换成success()则仅在任务成功时触发 run: | gh workflow run "Suburb Automatic" --ref master env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
注意事项
- GitHub官方托管的runner预装了
ghCLI,无需额外安装;如果是自托管runner,需要先安装GitHub CLI。 - 可通过修改
if条件控制触发时机,比如限制仅在特定分支、特定任务状态下触发,避免无意义的循环。 - 若要防止无限循环,可以在工作流中添加运行次数计数器(比如用环境变量或GitHub Secrets记录),达到设定次数后停止触发。
内容的提问来源于stack exchange,提问作者Luke Prior
相关产品推荐
相关产品推荐

