通过 GitHub Actions 将 GitHub 仓库自动备份到 Gitee、GitLab

前言

目前开源已经逐渐形成了一种趋势,越来越多的 geeker 加入了开源大军,开源社区也逐渐壮大,推动了技术发展和快速迭代

作为全球知名的代码托管平台,GitHub、Gitee、GitLab 均拥有不小的用户量,尤其是 GayHub,作为全球最大的同性交友平台,拥有超过 4 千万的用户量,足以说明其在业内的知名度

但是,对于个人来说,使用一个托管平台就足够了,但是我们又有在其他平台备份的需求,并且希望有更新时能够自动备份

对于这种需求,解决办法大多是利用 webhook,或者是在本地仓库中 remote add 添加远程仓库,这样就可以 push 到多个远程仓库。但是这些方法较为繁琐,更何况还有更好用的办法——GitHub Actions,有关 GitHub Actions 的一些教程还可参考博客 GitHub Actions 部署爬虫并定时发送邮件

步骤

1. 生成 ssh

git bash 中敲入命令,会在 ~/.ssh 文件夹下生成 id_rsa.pub 文件和 id_rsa 文件,分别存放公钥和私钥

ssh-keygen -t rsa -C "user@email.com"

2. 将公钥添加到 GitLab、Gitee

Gitee: 「设置」–>「安全设置」–>「SSH公钥」

GitLab: 「Settings」–>「SSH Keys」

3. 将私钥添加到 GitHub 仓库

GitHub Repository: 「Settings」–>「Secrets」

4. 取消 GitLab 仓库的受保护分支

由于 GitLab 仓库分支默认会受保护,即无法强制推送,如果不取消会报以下错误

GitLab: You are not allowed to force push code to a protected branch on this project.

GitLab Repository: 「Settings」–>「Repository」–>「Protected Branches」

5. 配置 GitHub Actions

git bash 中敲入命令

mkdir -p .github/workflows && touch .github/workflows/mirror.yml

用 VS Code 打开 mirror.yml 或使用 vi 编辑,将下列内容添加其中

name: 'GitHub Actions Mirror'

on: [push, delete]

jobs:
  mirror_to_gitee:
    runs-on: ubuntu-latest
    steps:
      - name: 'Checkout'
        uses: actions/checkout@v1
      - name: 'Mirror to gitee'
        uses: pixta-dev/repository-mirroring-action@v1
        with:
          target_repo_url:
            git@gitee.com:tsund/test.git
          ssh_private_key:
            ${{ secrets.GITEE_KEY }}

  mirror_to_gitlab:
    runs-on: ubuntu-latest
    steps:
      - name: 'Checkout'
        uses: actions/checkout@v1
      - name: 'Mirror to gitlab'
        uses: pixta-dev/repository-mirroring-action@v1
        with:
          target_repo_url:
            git@gitlab.com:tsund/test.git
          ssh_private_key:
            ${{ secrets.GITLAB_KEY }}

其中,使用了 repository-mirroring-action,定义了两个 job,分别负责备份 Gitee 和 GitLab 仓库,target_repo_url 指明目标仓库的 ssh 地址,ssh_private_key 指明 GitHub 仓库中 Secrets 存放的目标仓库的 ssh 私钥

配置完成后,向 GitHub 仓库 push 时就会自动备份到 Gitee、GitLab 对应的仓库了

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值