利用 GitHub Action 实现镜像存储库
Github Action
Github Action 是 Github 推出的一项持续集成服务, 我们可以利用 Github Action 来实现多平台测试代码, 多平台打包, 访问远程服务等等.
如 github.com/soxft/serverStatus 我就利用 Github Action 实现了代码Push到仓库main分支时, 自动多平台编译并发布 Release.
当然, 这篇文章最主要的还是实现, 当我们push到Github时, 自动将更改同时推送至其他平台.
需求
首先了解一下, 为什么我们需要实现 镜像自己的存储库.
其实很简单, 我们无法确保自己的Github或其他平台账户会不会突然有一天莫名其妙的消失, 或者 有些人会更喜欢去私有化自己的存储库, 想要同时备份到自己的私有服务器上. 但不希望手动push多次.
这个时候我们可以利用Github Action, 在push到Github的同时, 同步一份到Gitee, Gitlab, Gitea…
如何实现
通过ssh-keygen或其他方式, 创建一个ssh密钥及公钥文件, 将公钥上传至需要同步到的Git托管平台.
在需要被同步的仓库中, 在
settings > secrets > actions
处 新建一个secret,Name
为 KEY,Value
为刚刚创建的私钥.在自己的仓库根目录新建一个
.github/workflows/mirror.yml
文件编辑其内容
1 | name: 'GitHub Actions Mirror' |
- push代码到仓库, 验证是否有效.
Tips
Gitlab 可能需要在被同步仓库处取消对主分支对protect, 否则可能会失败