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

GitHub定时Action推送子模块引用变更后,push触发的Action未执行

问题原因及解决办法

核心原因

GitHub Actions存在默认安全机制:由GitHub Actions工作流发起的push事件,不会触发其他工作流。这是为了避免出现无限循环的工作流执行(比如Workflow A触发Workflow B,Workflow B又触发Workflow A)。

你的第二个定时/手动Workflow在推送子模块引用变更到父仓库时,使用的是GitHub Actions默认的GITHUB_TOKEN进行推送,这种情况下GitHub会自动跳过后续的工作流触发,所以第一个监听push事件的Workflow不会运行。而你手动推送文件时,使用的是个人令牌或SSH密钥,不属于工作流发起的推送,因此能正常触发第一个Workflow。

解决办法

要让第二个Workflow推送后能触发第一个Workflow,需要在第二个Workflow的推送步骤中,使用**个人访问令牌(PAT)**替代默认的GITHUB_TOKEN:

  1. 在GitHub账户中创建一个具备repo权限的个人访问令牌(PAT),并将其添加为父仓库的机密(例如命名为PUSH_TOKEN)。
  2. 修改第二个Workflow中的推送步骤,用这个PAT完成推送:
    - name: Push submodule reference change
      run: |
        git config user.name "GitHub Actions"
        git config user.email "actions@github.com"
        git add .gitmodules
        git commit -m "Update submodule reference"
        git push https://${{ secrets.PUSH_TOKEN }}@github.com/你的用户名/父仓库名.git main
    

通过PAT发起的推送会被GitHub判定为普通用户的推送,进而正常触发第一个监听push事件的Workflow。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:41:07