选中内容(绿色)时除了会搜索文章名,还会搜索文章内容
点击结果中的文章名进入文章界面后可以按Ctrl+F在页面内搜索
  • 版权:CC BY-SA 4.0
  • 创建:2020-11-19
  • 更新:2020-11-19
  • 关键词: github action 同步到gitee gitee 码云 同步
提交代码到 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-96pk78.jpg