- 作者:
- 分类:知识&开发->工具->版本管理&自动构建
- 阅读:980
- 点赞: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 Actions
name: 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 parallel
jobs:
# This workflow contains a single job called "build"
sync_gitee:
name: sync repo to gitee
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: checkout code from github
uses: actions/checkout@v2
# Runs a set of commands using the runners shell
- name: sync shell cmd
run: |
GITEE_GIT_ADDR="git@gitee.com:Sipeed/maixpy_scripts.git"
git fetch --unshallow
SSHPATH="$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_ADDR
git push upstream --all --force
这里注意,有几个地方需要简单修改一下:
GITEE_GIT_ADDR
这个变量是 gitee 仓库的地址, 注意是git
地址而不是https
地址- 还有
GITEE_SYNC_ACCESSS_KEY
这个变量就是前面我们在 github仓库设置的变量, 之前名字如果不是这个,也需要修改成一样的
创建后,右上角点击提交即可,代码更新后会自动触发构建, 可以到Action
里面看进度和结果,有什么错误修改一下就好了
其它
这里手动建立仓库, 也有其他人做了 action 里面自动建立仓库的, 但是需要在gitee
再生成一个key
,所以少了一步创建仓库,多了一部生成 key
, 并没有将过程变得更加简单,可能对于有多个仓库有一定的作用, 但是我希望代码越少越好,越简洁越健壮越好维护,就这样使用吧哈哈哈哈
另外也没有打包成 action market 可以使用的公用包, 因为功能就这么简单,复制粘贴的事情何必做那么复杂, 而且方便根据自己的情况直接修改