如何通过GitHub Actions定期推送空提交触发build.yml工作流?
用GitHub Actions定时推送空提交触发部署工作流
实现思路
新建一个独立的GitHub Actions工作流,通过schedule定时触发,在工作流中执行Git命令推送空提交到默认分支(main),以此触发你已有的build.yml工作流完成部署。
具体配置步骤
- 在仓库的
.github/workflows目录下新建文件trigger-deploy.yml - 填入以下配置:
name: 定时触发部署 on: schedule: - cron: '30 3 10 * *' # 每月10日UTC时间3点30分执行 workflow_dispatch: # 保留手动触发选项,方便测试 jobs: push-empty-commit: runs-on: ubuntu-latest steps: - name: 拉取仓库代码 uses: actions/checkout@v4 with: fetch-depth: 0 persist-credentials: false - name: 配置Git身份 run: | git config --global user.name "GitHub Actions Bot" git config --global user.email "actions@github.com" - name: 推送空提交 run: | git commit --allow-empty -m "定时触发部署:应用组织级补丁更新" git push https://${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git main
关键细节
- 时区注意:
cron表达式采用UTC时间,如果需要对应北京时间,可将表达式改为30 19 9 * *(UTC+8时区比UTC早8小时,对应北京时间10日凌晨3点30分) - 权限配置:默认的
GITHUB_TOKEN需要具备推送main分支的权限,若仓库开启了分支保护,要么为该token配置对应权限,要么使用个人访问令牌(PAT)存入仓库Secrets中替换GITHUB_TOKEN - 空提交说明:
--allow-empty参数允许创建无代码变更的提交,提交信息可根据需求自定义,明确触发部署的原因
更优替代方案(推荐)
无需额外推送空提交,直接修改你现有的build.yml,添加schedule触发规则即可:
on: push: branches: [main] schedule: - cron: '30 3 10 * *' # 直接定时触发构建部署
这种方式更简洁,不会产生无意义的提交记录污染仓库历史,建议优先采用。
内容的提问来源于stack exchange,提问作者VSanka
相关产品推荐
相关产品推荐

