选中内容(绿色)时除了会搜索文章名,还会搜索文章内容
点击结果中的文章名进入文章界面后可以按Ctrl+F在页面内搜索
  • 版权:CC BY-SA 4.0
  • 创建:2020-11-19
  • 更新:2020-11-19
提交代码到 github 后,更新自动同步到 gitee(码云),使用 github action 实现


背景

github 在国内访问慢,在某些情况下,为了让国内不会使用科技的人能看到代码仓库,每次更新后自动同步到 gitee, 但是 gitee 没有自带这个功能,原因嘛,有了自动同步大家都这么做的话,gitee岂不是成为 github 的镜像站了2333

所以需要我们自己实现,利用 github action 或者 travis ci 都可以,这里介绍 github action,很简单

准备

创建仓库

在 gitee 注册用户创建一个仓库,创建的时候可以选择从其它仓库导入,也可以不选择,不影响,其它内容选择空

gitee_create

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

gitee_sync_manually

生成 key

在电脑中生成key

  1. 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_secret_key

添加 github action

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

add_action

然后添加构建过程, 复制以下代码

  1. # This is a basic workflow to help you get started with Actions
  2. name: sync code to gitee
  3. # Controls when the action will run. Triggers the workflow on push or pull request
  4. # events but only for the master branch
  5. # on:
  6. # push:
  7. # branches: [ master ]
  8. # pull_request:
  9. # branches: [ master ]
  10. on: [push, pull_request]
  11. # A workflow run is made up of one or more jobs that can run sequentially or in parallel
  12. jobs:
  13. # This workflow contains a single job called "build"
  14. sync_gitee:
  15. name: sync repo to gitee
  16. # The type of runner that the job will run on
  17. runs-on: ubuntu-latest
  18. # Steps represent a sequence of tasks that will be executed as part of the job
  19. steps:
  20. # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
  21. - name: checkout code from github
  22. uses: actions/checkout@v2
  23. # Runs a set of commands using the runners shell
  24. - name: sync shell cmd
  25. run: |
  26. GITEE_GIT_ADDR="git@gitee.com:Sipeed/maixpy_scripts.git"
  27. git fetch --unshallow
  28. SSHPATH="$HOME/.ssh"
  29. rm -rf "$SSHPATH"
  30. mkdir -p "$SSHPATH"
  31. echo "${{ secrets.GITEE_SYNC_ACCESSS_KEY }}" > "$SSHPATH/id_rsa"
  32. chmod 600 "$SSHPATH/id_rsa"
  33. sudo sh -c "echo StrictHostKeyChecking no >>/etc/ssh/ssh_config"
  34. git remote add upstream $GITEE_GIT_ADDR
  35. git push upstream --all --force --tags

这里注意,有几个地方需要简单修改一下:

  • GITEE_GIT_ADDR这个变量是 gitee 仓库的地址, 注意是 git地址而不是https地址
    gitee_clone
  • 还有GITEE_SYNC_ACCESSS_KEY这个变量就是前面我们在 github仓库设置的变量, 之前名字如果不是这个,也需要修改成一样的

yml

创建后,右上角点击提交即可,代码更新后会自动触发构建, 可以到Action里面看进度和结果,有什么错误修改一下就好了

其它

这里手动建立仓库, 也有其他人做了 action 里面自动建立仓库的, 但是需要在gitee再生成一个key,所以少了一步创建仓库,多了一部生成 key, 并没有将过程变得更加简单,可能对于有多个仓库有一定的作用, 但是我希望代码越少越好,越简洁越健壮越好维护,就这样使用吧哈哈哈哈

另外也没有打包成 action market 可以使用的公用包, 因为功能就这么简单,复制粘贴的事情何必做那么复杂, 而且方便根据自己的情况直接修改

文章有误?有想法想讨论?查看或者发起勘误/讨论 主题
(发起评论需要先登录 github)

/wallpaper/wallhaven-28el1y.jpg