如何避免从模板创建仓库后自动触发GitHub Actions工作流?
解决Turborepo模板仓库初始化后工作流自动运行的问题
以下是几种实用方案,可根据需求选择:
1. 给工作流添加仓库判断条件
在模板的GitHub Actions工作流文件中,给需要控制的jobs添加仓库判断逻辑,仅当当前仓库不是你的模板仓库时才执行任务。这种方式无需用户额外操作,自动跳过初始运行:
jobs: test: # 仅当当前仓库不是模板仓库时执行 if: github.repository != 'mayank1513/turborepo-template' runs-on: ubuntu-latest # 后续测试步骤... publish: if: github.repository != 'mayank1513/turborepo-template' runs-on: ubuntu-latest # 后续发布步骤...
用户基于模板创建新仓库后,github.repository会自动替换为新仓库地址,后续推送/PR时工作流会正常触发。
2. 使用标记文件控制工作流启停
在模板仓库中添加一个标记文件,通过检查该文件是否存在来控制工作流是否运行:
- 在模板的
.github目录下创建空文件skip-initial-workflows - 修改工作流文件:
jobs: test: if: !exists('.github/skip-initial-workflows') runs-on: ubuntu-latest # 测试步骤...
用户创建新仓库后,只需删除这个标记文件,后续的推送/PR就会正常触发工作流。
3. 调整工作流触发规则
针对不同工作流设置更严格的触发条件,避免初始提交触发:
测试工作流
限制为特定分支推送或PR触发,同时保留手动触发选项:
on: push: branches: - main - 'release/**' pull_request: branches: - main workflow_dispatch: # 允许手动触发
发布工作流
改为仅手动触发或在GitHub Release发布时触发,彻底避免自动运行:
on: workflow_dispatch: # 手动触发发布 release: types: [published] # 当GitHub Release正式发布时自动触发
4. 注释初始触发规则(需用户手动启用)
在模板的工作流文件中,默认注释掉push/pull_request的自动触发规则,仅保留手动触发选项,让用户完成仓库初始化后自行启用:
# on: # push: # branches: [main] # pull_request: # branches: [main] on: workflow_dispatch: # 暂时仅允许手动触发
用户完成仓库配置后,取消注释对应的触发规则即可恢复自动运行。
内容的提问来源于stack exchange,提问作者Mayank Kumar Chaudhari
相关产品推荐
相关产品推荐

