GitHub Actions

答案是接着使用 GitHub Actions!你可能会想,Gitee 也有 GitHub Actions 服务吗?Gitee 也会像 GitHub 一样检测 .github/workflows/ 目录下的 YAML 文件,然后执行吗?
这当然是不可能的,Gitee 并不支持 GitHub 的这套方式,但我们为什么一定要借用 Gitee 的能力呢?我们在 GitHub Actions 中,模拟登陆 Gitee,点击项目的部署按钮,不也是一种实现方式吗?

搜索 Actions

我们接下来去找一些合适的 GitHub Actions,我们可以在 GitHub 的官方市场,或者 awesome actions 仓库,再或者直接在 GitHub 搜索比如 gitee pages actions 之类的关键词。
image.png
最终,我们决定使用 Gitee Pages Action,查看一下主页的示例代码:

  1. name: Sync
  2. on:
  3. push:
  4. branches: [main]
  5. workflow_dispatch:
  6. jobs:
  7. build:
  8. runs-on: ubuntu-latest
  9. steps:
  10. - name: Sync to Gitee
  11. uses: wearerequired/git-mirror-action@master
  12. env:
  13. # 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
  14. SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
  15. with:
  16. # 注意替换为你的 GitHub 源仓库地址
  17. source-repo: git@github.com:doocs/leetcode.git
  18. # 注意替换为你的 Gitee 目标仓库地址
  19. destination-repo: git@gitee.com:Doocs/leetcode.git
  20. - name: Build Gitee Pages
  21. uses: yanglbme/gitee-pages-action@main
  22. with:
  23. # 注意替换为你的 Gitee 用户名
  24. gitee-username: yanglbme
  25. # 注意在 Settings->Secrets 配置 GITEE_PASSWORD
  26. gitee-password: ${{ secrets.GITEE_PASSWORD }}
  27. # 注意替换为你的 Gitee 仓库,仓库名严格区分大小写,请准确填写,否则会出错
  28. gitee-repo: doocs/leetcode
  29. # 要部署的分支,默认是 master,若是其他分支,则需要指定(指定的分支必须存在)
  30. branch: main

我们之前已经实现了 GitHub 代码同步 Gitee,这里我们直接使用后半部分的自动部署 actions,结合上篇的 YAML 文件代码,最终的修改如下:

  1. name: syncToGitee
  2. on:
  3. push:
  4. branches:
  5. - gh-pages
  6. jobs:
  7. repo-sync:
  8. runs-on: ubuntu-latest
  9. steps:
  10. - name: Mirror the Github organization repos to Gitee.
  11. uses: Yikun/hub-mirror-action@master
  12. with:
  13. src: 'github/mqyqingfeng'
  14. dst: 'gitee/mqyqingfeng'
  15. dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
  16. dst_token: ${{ secrets.GITEE_TOKEN }}
  17. static_list: "learn-typescript"
  18. force_update: true
  19. debug: true
  20. - name: Build Gitee Pages
  21. uses: yanglbme/gitee-pages-action@main
  22. with:
  23. # 注意替换为你的 Gitee 用户名
  24. gitee-username: mqyqingfeng
  25. # 注意在 Settings->Secrets 配置 GITEE_PASSWORD
  26. gitee-password: ${{ secrets.GITEE_PASSWORD }}
  27. # 注意替换为你的 Gitee 仓库,仓库名严格区分大小写,请准确填写,否则会出错
  28. gitee-repo: mqyqingfeng/learn-typescript
  29. # 要部署的分支,默认是 master,若是其他分支,则需要指定(指定的分支必须存在)
  30. branch: gh-pages

注意不要忘了在仓库的设置里添加 Secrets,输入 Gitee 的登陆密码,然后保存名为 GITEE_PASSWORD

YAML 文件语法报错

如果 Actions 运行失败并出现了这种错误:
image.png
这是因为你的 YAML 语法写的有问题,可能是哪里没有对齐。可以在这个网址校验下你的 YAML 文件,也可以顺便看下阮一峰老师的 YAML 语言教程

再次运行

修改了代码之后,我们可以再执行一遍 sh deploy.sh,然后在 GitHub 上查看运行情况:
image.png
当运行成功,我们再查看 Gitee 的地址,就会发现已经部署为最新的版本了。
至此,实现了 GitHub 和 Gitee 代码的同步和自动部署。