Github Action
Github Action 是 Github 推出的一项持续集成服务, 我们可以利用 Github Action 来实现多平台测试代码, 多平台打包, 访问远程服务等等.
如 github.com/soxft/serverStatus 我就利用 Github Action 实现了代码Push到仓库main分之时, 自动多平台编译 Golang 源码并发布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
文件编辑其内容
name: 'GitHub Actions Mirror'
on: [push, delete]
jobs:
mirror_to_gitee:
runs-on: ubuntu-latest
steps:
- name: 'Checkout'
uses: actions/[email protected]
- name: 'Mirror to gitee'
uses: pixta-dev/[email protected]
with:
target_repo_url:
[email protected]:user/repo.git # 远程仓库
ssh_private_key:
${{ secrets.KEY }} # 密钥 (secret)
- push代码到仓库, 验证是否有效.
Tips
Gitlab 可能需要在被同步仓库处取消对主分支对protect, 否则可能会失败
本文链接:https://cloud.tencent.com/developer/article/1953745
所有原创文章采用 CC BY-NC-SA 4.0 协议进行许可, 转载请注明原文链接