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

如何在GitHub仓库B有新推送时自动在仓库A创建Issue?

实现依赖仓库更新时自动创建Issue的方案

一、用GitHub Actions实现(无B仓库权限也可用)

因为你没有B仓库的维护权限,无法直接在B仓库配置推送触发的Action,所以可以在A仓库配置定时检查+提交哈希对比的工作流,当B仓库有新提交时自动在A创建Issue并记录最新提交哈希。

具体步骤

  1. 在A仓库的.github/workflows目录下新建monitor-b-repo.yml文件
  2. 填入以下工作流配置(替换占位符为实际信息):
name: Monitor B Repository Updates
on:
  schedule:
    - cron: '0 */6 * * *'  # 每6小时检查一次,可按需调整
  workflow_dispatch:  # 支持手动触发检查

jobs:
  check-update:
    runs-on: ubuntu-latest
    steps:
      - name: 检出A仓库代码
        uses: actions/checkout@v4

      - name: 获取B仓库最新提交哈希
        id: get-b-commit
        run: |
          B_REPO_URL="https://github.com/[B仓库所有者]/[B仓库名].git"
          LATEST_COMMIT=$(git ls-remote $B_REPO_URL HEAD | awk '{print $1}')
          echo "latest_commit=$LATEST_COMMIT" >> $GITHUB_OUTPUT

      - name: 读取本地存储的B仓库上次提交哈希
        id: read-stored-commit
        run: |
          STORED_COMMIT=""
          if [ -f .b-latest-commit ]; then
            STORED_COMMIT=$(cat .b-latest-commit)
          fi
          echo "stored_commit=$STORED_COMMIT" >> $GITHUB_OUTPUT

      - name: 创建Issue并更新本地记录
        if: steps.get-b-commit.outputs.latest_commit != steps.read-stored-commit.outputs.stored_commit
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          LATEST_COMMIT: ${{ steps.get-b-commit.outputs.latest_commit }}
          B_REPO_FULL_NAME: "[B仓库所有者]/[B仓库名]"
        run: |
          # 创建Issue
          gh issue create --repo $GITHUB_REPOSITORY \
            --title "依赖仓库B有新提交" \
            --body "仓库B的最新提交哈希:$LATEST_COMMIT\n请检查是否需要同步A仓库的依赖功能。\n仓库地址:$B_REPO_FULL_NAME"
          
          # 更新本地存储的最新提交哈希
          echo $LATEST_COMMIT > .b-latest-commit
          
          # 提交并推送到A仓库
          git config --global user.name "github-actions[bot]"
          git config --global user.email "github-actions[bot]@users.noreply.github.com"
          git add .b-latest-commit
          git commit -m "更新B仓库最新提交哈希:$LATEST_COMMIT"
          git push

注意事项

  • 替换[B仓库所有者]/[B仓库名]为B仓库的完整路径
  • GITHUB_TOKEN是GitHub Actions自动注入的令牌,默认拥有创建Issue和推送代码的权限
  • cron表达式可根据需求调整检查频率(比如*/30 * * * *表示每30分钟检查一次)

二、其他可行方案

1. Dependabot(针对包版本更新)

如果A是通过包管理工具(如npm、pip、Maven)依赖B的发布版本,而非直接依赖源码提交,可以用Dependabot监控B的版本更新,自动创建Issue或PR。

在A仓库的.github/dependabot.yml中添加配置示例:

version: 2
updates:
  - package-ecosystem: "npm"  # 替换为你的包管理工具(pip/maven等)
    directory: "/"
    schedule:
      interval: "daily"
    allow:
      - dependency-name: "[B的包名]"  # 替换为B在包管理平台的名称

2. 第三方监控工具

部分代码监控服务支持仓库提交监控,可设置当B有新提交时,通过Webhook调用GitHub API在A仓库创建Issue。不过这种方案依赖第三方服务,不如GitHub Actions直接可控。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:58:24