目录

  • 引言
  • 具体方案


引言
  • 平时开源代码一般已Github为主,但是会遇到网不好的情况,于是考虑将Github仓库自动同步到Gitee上,作为备份。
  • 考虑不能手动做这个事情,于是想到了Github Actions 自动化同步到Gitee中
具体方案

假设Github已经有了仓库,这里以RapidAI/YOLO2COCO仓库为例。
!!!注意:下图图文并不完全对应,以文字为主

  1. 在Github仓库下开通Actions的功能,点击Actions选项卡→ 点击右下角Create a new workflow,命名为SyncToGitee.yml即可。
  2. 编写workflow的yml代码, 可以复制如下代码到自己yml中,需要更改的地方,在代码中已经标出
name: SyncToGitee
on:
  push:
    branches:
      - main
jobs:
  repo-sync:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout source codes
        uses: actions/checkout@v3

      - name: Mirror the Github organization repos to Gitee.
        uses: Yikun/hub-mirror-action@master
        with:
          src: 'github/RapidAI'    						# 这里改为自己github账号名称,如github/xiaoming
          dst: 'gitee/RapidAI'     						# 这里改为gitee上账号名称,如gitee/xiaoming
          dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}  	# 这是生成的私钥,下面第3步会讲
          dst_token:  ${{ secrets.GITEE_TOKEN }}     	# 这是gitee上生成的token,下面会讲
          force_update: true
          static_list: "YOLO2COCO"   					# 同步的仓库名称,这里为YOLO2COCO,意思是会自动同步该仓库到gitee下同名仓库
          debug: true
  1. 配置公钥、私钥和Gitee Token
  1. 配置公钥和私钥:公钥是Gitee这里拿着,私钥是Github拿着。因为是Github这里要同步到Gitee.
  • 生成私钥和公钥:ssh-kengen -t ed25529 -C xxxx@xxx.com ,具体可参见:生成/添加SSH公钥
  • 生成完之后,会在指定目录下有两个文件:id_ed25519id_ed25519.public,前者是私钥,后者是公钥。
  • id_ed25519用记事本打开,复制里面内容,粘贴到Github个人仓库下的secret中。步骤:点击仓库首页选项卡setting,会看到如下图,点击新建New repository secret
  • 输入Name为GITEE_PRIVATE_KEY, Value为复制的私钥内容
  • 打开Gitee个人账号的设置页面 → 点击安全设置下的私人令牌 → 右上角生成新令牌,如下图所示:
  • 点击提交之后,会得到类似下图所示的私人令牌,将其复制,并配置到Github的secret界面,类似上一步的私钥那样。
  • 最终Github这里配置的Actions secrets如下:
  1. 配置Gitee端的公钥:进入Gitee个人账号界面下的SSH公钥界面,类似下图,将上面生成的id_ed25519.public目录用记事本打开,复制里面内容到下图中的公钥框里,标题可根据用途命名。
  1. 至此,整个配置就已经完毕。可以将步骤2中的yml文件提交到仓库中,就可以自动触发Actions执行,可以查看是否可以自动同步到Gitee仓库下。