- 作者:
- 分类:知识&开发->工具->版本管理&自动构建
- 阅读:3210
- 点赞:1
- 版权:CC BY-SA 4.0
- 创建:2020-11-19
- 更新:2022-06-30
原文链接(持续更新):https://neucrack.com/p/331
背景
github 在国内访问慢,在某些情况下,为了让国内不会使用科技的人能看到代码仓库,每次更新后自动同步到 gitee, 但是 gitee 没有自带这个功能,原因嘛,有了自动同步大家都这么做的话,gitee岂不是成为 github 的镜像站了2333
所以需要我们自己实现,利用 github action 或者 travis ci 都可以,这里介绍 github action,很简单
准备
创建仓库
在 gitee 注册用户创建一个仓库,创建的时候可以选择从其它仓库导入,也可以不选择,不影响,其它内容选择空

如果选了导入, 可以看到,这里有一个手动同步按钮, 但是只能手动点击同步

生成 key
在电脑中生成key
ssh-keygen -t rsa -f key.txt
这会生成两个key,一个公钥key.txt.pub和 私钥key.txt
设置 key
公钥部署到 gitee
在 https://gitee.com/profile/sshkeys 添加一个新的公钥,即key.txt.pub里面的内容, 注意是公钥不是私钥
私钥部署到 github action 加密变量
到需要同步的仓库,点击设置,选择 serects, 添加一个加密键值, 取名叫 GITEE_SYNC_ACCESSS_KEY, 值则复制私钥文件key.txt里面的内容即可,注意是私钥,不是公钥。为了后面的不能修改直接使用,名字请一定是GITEE_SYNC_ACCESSS_KEY
这样就把这个密钥储存到这个变量里面,因为这个私钥很重要,不能泄露,所以存在这个变量中,然后我们在 action 里面使用, 就不会暴露到源码中了

添加 github action
在 github 上要同步的仓库里面点击action, 然后点击 set up a workflow yourself

然后添加构建过程, 复制以下代码
# This is a basic workflow to help you get started with Actionsname: sync code to gitee# Controls when the action will run. Triggers the workflow on push or pull request# events but only for the master branch# on:# push:# branches: [ master ]# pull_request:# branches: [ master ]on: [push, pull_request]# A workflow run is made up of one or more jobs that can run sequentially or in paralleljobs:# This workflow contains a single job called "build"sync_gitee:name: sync repo to gitee# The type of runner that the job will run onruns-on: ubuntu-latest# Steps represent a sequence of tasks that will be executed as part of the jobsteps:# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it- name: checkout code from githubuses: actions/checkout@v2# Runs a set of commands using the runners shell- name: sync shell cmdrun: |GITEE_GIT_ADDR="git@gitee.com:Sipeed/maixpy_scripts.git"git fetch --unshallowSSHPATH="$HOME/.ssh"rm -rf "$SSHPATH"mkdir -p "$SSHPATH"echo "${{ secrets.GITEE_SYNC_ACCESSS_KEY }}" > "$SSHPATH/id_rsa"chmod 600 "$SSHPATH/id_rsa"sudo sh -c "echo StrictHostKeyChecking no >>/etc/ssh/ssh_config"git remote add upstream $GITEE_GIT_ADDRgit push upstream --all --force
这里注意,有几个地方需要简单修改一下:
GITEE_GIT_ADDR这个变量是 gitee 仓库的地址, 注意是git地址而不是https地址
- 还有
GITEE_SYNC_ACCESSS_KEY这个变量就是前面我们在 github仓库设置的变量, 之前名字如果不是这个,也需要修改成一样的

创建后,右上角点击提交即可,代码更新后会自动触发构建, 可以到Action里面看进度和结果,有什么错误修改一下就好了
其它
这里手动建立仓库, 也有其他人做了 action 里面自动建立仓库的, 但是需要在gitee再生成一个key,所以少了一步创建仓库,多了一部生成 key, 并没有将过程变得更加简单,可能对于有多个仓库有一定的作用, 但是我希望代码越少越好,越简洁越健壮越好维护,就这样使用吧哈哈哈哈
另外也没有打包成 action market 可以使用的公用包, 因为功能就这么简单,复制粘贴的事情何必做那么复杂, 而且方便根据自己的情况直接修改

