我不确定您的系统是否能够捕捉到引用的删除以触发构建,但由于 CI 实例是从您的开发远程个人存储库中提取的,您应该使用它git remote prune origin
来删除 CI 端已删除的分支个人远程仓库(假设 origin 是开发远程仓库的远程名称,因为它是从那里克隆的)
当您的 CI 推送到绿色存储库时,它能够将远程分支的子集与其当前拥有的分支进行比较,并找到已删除的分支。因此,在 CI 方面,您可以在每次推送时执行类似的操作:
git branch -a | grep {green_repo_remote_name}
将其与本地分支机构列表进行比较:
git branch
并执行
git push {green_repo_remote_name} :branch_name_that_exists_only_in_green_repo
更新:
根据下面的评论,上面的方法似乎将从绿色仓库中删除其他 devs 分支。我的错。在我看来,有两种方法可以解决这个问题:
一、停止在green repo中创建dev分支,使用CI来实际整合变更:
从开发个人仓库更改后,CI 应检查此更改,从绿色仓库拉出一个众所周知的集成分支,将开发分支合并到其中并编译。如果成功,则将更改推回绿色回购
二、将 CI repos 注册为绿色 repo 中的遥控器,在绿色 repo 端使用 post-receive hook 来触发git remote prune *
。这将有效地删除从每个遥控器的 CI 存储库中删除的所有分支。
我希望这会有所帮助!