利用 GitHub Action 实现镜像存储库

2022-03-10 09:09:11 浏览数 (1)

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...

如何实现

  1. 通过ssh-keygen或其他方式, 创建一个ssh密钥及公钥文件, 将公钥上传至需要同步到的Git托管平台.
  2. 在需要被同步的仓库中, 在settings > secrets > actions处 新建一个secret, Name为 KEY, Value为刚刚创建的私钥.
  3. 在自己的仓库根目录新建一个.github/workflows/mirror.yml 文件编辑其内容
代码语言:javascript复制
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)
  1. push代码到仓库, 验证是否有效.

Tips

Gitlab 可能需要在被同步仓库处取消对主分支对protect, 否则可能会失败

本文链接:https://cloud.tencent.com/developer/article/1953745

所有原创文章采用 CC BY-NC-SA 4.0 协议进行许可, 转载请注明原文链接

0 人点赞