目录
- 引言
- 具体方案
引言
- 平时开源代码一般已Github为主,但是会遇到网不好的情况,于是考虑将Github仓库自动同步到Gitee上,作为备份。
- 考虑不能手动做这个事情,于是想到了Github Actions 自动化同步到Gitee中
具体方案
假设Github已经有了仓库,这里以RapidAI/YOLO2COCO仓库为例。
!!!注意:下图图文并不完全对应,以文字为主
- 在Github仓库下开通Actions的功能,点击Actions选项卡→ 点击右下角Create a new workflow,命名为SyncToGitee.yml即可。
- 编写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
- 具体配置参数可参考:hub-mirror-action
- 配置公钥、私钥和Gitee Token
- 配置公钥和私钥:公钥是Gitee这里拿着,私钥是Github拿着。因为是Github这里要同步到Gitee.
- 生成私钥和公钥:
ssh-kengen -t ed25529 -C xxxx@xxx.com
,具体可参见:生成/添加SSH公钥 - 生成完之后,会在指定目录下有两个文件:
id_ed25519
和id_ed25519.public
,前者是私钥,后者是公钥。 - 将
id_ed25519
用记事本打开,复制里面内容,粘贴到Github个人仓库下的secret中。步骤:点击仓库首页选项卡setting,会看到如下图,点击新建New repository secret: - 输入Name为GITEE_PRIVATE_KEY, Value为复制的私钥内容
- 打开Gitee个人账号的设置页面 → 点击安全设置下的私人令牌 → 右上角生成新令牌,如下图所示:
- 点击提交之后,会得到类似下图所示的私人令牌,将其复制,并配置到Github的secret界面,类似上一步的私钥那样。
- 最终Github这里配置的Actions secrets如下:
- 配置Gitee端的公钥:进入Gitee个人账号界面下的SSH公钥界面,类似下图,将上面生成的
id_ed25519.public
目录用记事本打开,复制里面内容到下图中的公钥框里,标题可根据用途命名。
- 至此,整个配置就已经完毕。可以将步骤2中的yml文件提交到仓库中,就可以自动触发Actions执行,可以查看是否可以自动同步到Gitee仓库下。