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

GitHub Actions workflow_run触发器持续触发旧提交SHA,删文件仍运行如何解决?

解决workflow_run触发后检出错误提交的问题

一、修复workflow_run触发器的正确配置

如果坚持使用workflow_run触发镜像构建,需确保以下配置细节:

  • 严格限定触发分支为develop,且仅在CI工作流成功完成后触发
  • checkout步骤必须指定github.event.workflow_run.head_sha,同时设置完整克隆避免历史缺失
  • 示例配置:
on:
  workflow_run:
    workflows: ["Frontend CI"]
    branches: [develop]
    types:
      - completed

jobs:
  build-docker:
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    runs-on: ubuntu-latest
    steps:
      - name: 检出正确提交
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.workflow_run.head_sha }}
          fetch-depth: 0 # 完整克隆仓库,避免浅克隆导致的提交匹配异常
      # 后续Docker构建推送步骤

二、彻底清理旧缓存的工作流

GitHub的工作流缓存/历史运行可能导致旧配置持续执行,需手动处理:

  • 进入仓库的Actions页面,找到旧的web-image-develop.yml对应的工作流
  • 点击右上角三个点,选择Disable workflow,彻底禁用旧工作流
  • 可进一步删除该工作流的所有历史运行记录,避免误触发

三、更优替代方案:将Docker构建整合到原CI工作流

把镜像构建直接加入frontend-ci.yml,作为CI通过后的后续步骤,完全避免跨工作流的提交同步问题:

  • 配置needs依赖确保仅在所有CI任务通过后执行
  • 分支判断限定仅在develop分支运行
  • 示例配置:
jobs:
  unit-tests:
    # 单元测试任务配置
  type-check:
    # 类型检查任务配置
  build:
    # 前端构建任务配置
  deploy-develop-image:
    needs: [unit-tests, type-check, build]
    if: ${{ github.ref == 'refs/heads/develop' }}
    runs-on: ubuntu-latest
    steps:
      - name: 检出当前分支最新提交
        uses: actions/checkout@v4
      # Docker构建推送步骤

这种方案的优势是所有步骤共享同一个触发提交,完全不会出现提交不匹配的问题,逻辑更简洁可靠。

内容的提问来源于stack exchange,提问作者Burak İbrahim Ünal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 01:17:28