背景

因为互联网网络的原因,我们很多时候无法访问github。而我的所有项目都是通过Drone CI – Automate Software Testing and Delivery + GitHub自动构建的。其中drone ci服务部署在阿里云服务器中,会有访问不了github的情况,最近越发频繁,需要寻找新的方法解决该问题。

此外还有其它原因:

  • github因为国际形势不对我们开放了怎么办?
  • github上你的数据被黑客删除了怎么办?
  • 突然访问不了github,但是急需里面的某个文件怎么办?
  • 账号被封禁或限制访问了

等等。所以,把github仓库备份一下是有必要的。

方案

使用github action来实现。

代码在github上,同时复制一份到gitee上,阿里云服务器和gitee是网络互通的。

调研了几款工具

Yikun/hub-mirror-action

url: https://github.com/Yikun/hub-mirror-action

截到目前(2025-03-31),只可同步Public仓库。可配置黑白名单。可同时同步多个仓库。

x-actions/git-mirrors

url: https://github.com/x-actions/git-mirrors

在Yikun/hub-mirror-action的基础上,网站说可以同步private仓库,经验证后发现只能同步创建私有仓库,不能同步数据到仓库。

abersheeran/sync-gitee-mirror

url: https://github.com/abersheeran/sync-gitee-mirror

可同步私有仓库,需要提前在gitee中创建好。

优点:

  • 同步私有仓库和公有仓库。
  • 只需要配置一个secret:GITEE_TOKEN

缺点:

  • 每次只能同步一个仓库。且每个仓库都要配置GITEE_TOKEN。
  • 当gitee仓库不存在时无法自动创建。

valuetodays/backup-repo-to-gitee

我自己根据 abersheeran/sync-gitee-mirror 自己定制了一个,当gitee仓库不存在时可以自动创建。
url:https://github.com/valuetodays/backup-repo-to-gitee

目前是完美解决了问题。