如何在GitHub仓库B有新推送时自动在仓库A创建Issue?
实现依赖仓库更新时自动创建Issue的方案
一、用GitHub Actions实现(无B仓库权限也可用)
因为你没有B仓库的维护权限,无法直接在B仓库配置推送触发的Action,所以可以在A仓库配置定时检查+提交哈希对比的工作流,当B仓库有新提交时自动在A创建Issue并记录最新提交哈希。
具体步骤
- 在A仓库的
.github/workflows目录下新建monitor-b-repo.yml文件 - 填入以下工作流配置(替换占位符为实际信息):
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
相关产品推荐
相关产品推荐

