自动同步 github 仓库到 gitee
自动同步 github 仓库到 gitee
先上最终效果
代码仓库: github2gitee
Github Action 同步结果:
为什么要同步到 gitee
将 gitee 仓库作为备份镜像仓库,以防不测
网上的同步方法
大致在网上查找了一通,基本都是使用 github action 做到自动同步,也有一些前人封装好的 action,所以做起来还是相对轻松的,由于不排除有新的更好的轮子出现,所以建议想要用的同学们先去市场上搜一搜,说不定有新惊喜, 进入 action marketplace
但是逐一去尝试,实在是费时费力,所以我还是更愿意看别人做好的分享,发现用 Yikun/hub-mirror-action 这个工具的比较多,也有很多用户分享自己使用这个工具的博文,这里列举我参考的博文,网上的类似文章不少,可以多搜几篇参考,基本大同小异。
写一个合适自己的脚本
用 Yikun/hub-mirror-action 这个工具实现后,主要遇到几个问题:
- 每个新建的仓库,都需要自己加 action, 而且同样的密钥配置,需要每建一个仓库,都在仓库下重复配置一遍(可能因为本人是免费用户?),复杂度 O(n),我不能忍
- 将 github 和 gitee 私钥放得到处都是的做法(每个仓库都有一个备份),没有安全感
因此,觉得做一个适合自己的轮子
专门的仓库 + 定时任务 来处理同步
由于水平有限,还不会写 github action,所以用最简单的方法,搞几个小脚本,做成定时任务,周期拉取所有仓库,然后同步。
结合自己的情况,我自己有一台云主机,那么直接在云主机上搞定时任务,就很简单,只需要几个脚本,实现代码 github2gitee
这样做的好处:
- 自动更新: 当 github 的仓库发生变更时,自动同步代码变更以及commit历史记录到 gitee 对应的仓库
- 一次配置,适配所有仓库:不需要针对每个仓库进行单独的设置,也不需要在每个 github 仓库上增加 github action
- 支持私有仓库: 同时支持同步 github 公有仓库和私有仓库
- 灵活选择同步仓库:支持仓库的黑白名单配置,默认同步所有 github 仓库, 可以只同步指定仓库,也可以屏蔽特定仓库
同时,由于私钥都放在云主机上,相对比放仓库要放心许多。
没有云主机怎么办?
如果没有云主机,可以参考项目中的 github action,用 schedule 进行定时触发,此时需要将 github 和 gitee 的私钥都放到 action 的 secret 中。
使用 github action 需要的变量:
GITEE_PRIVATE_KEY: gitee 的私钥,用于提交代码
GIT_PRIVATE_KEY: github 的私钥,用于拉取代码
GITEE_TOKEN: gitee 的个人令牌,用于获取仓库列表,查询 commit id 等
GIT_TOKEN: github 的个人令牌,用于获取仓库列表,查询 commit id 等