使用 GitHub Acitons 实现 push 自动同步到 Gitee 仓库
大约 4 分钟学习笔记HexoGit
废话前言
无用的废话, 可看可不看
- 我的个人博客是通过 Github 的 Pages 技术搭建的静态博客,使用 Hexo驱动。
- 由于 Github 在国内环境访问速度慢,并且不够稳定,所以通常对外介绍使用 Gitee 的镜像博客仓库,但是每次都需要在推送 Github 之后去 Gitee 上对应的仓库进行 手动同步,就无端增加了很多重复的工作量.
- 经过多方搜索和实践,最终选定了 Github Actions实现代码自动 Build,同步到 Gitee.
关联教程
github 自动同步到 gitee 镜像库 , 通过Github Actions 实现代码自动 Build,同步到 Gitee
一、本地公钥和私钥
1. 生成
在 本地终端 输入以下代码 (邮箱换为自己的),不要犹豫,一路 Enter 即可, 出现下图即表示成功
ssh-keygen -t rsa -C "pupper.cheng@gmail.com"
相关信息
如果已经有了 私钥 公钥,可能不会有上图的效果.
2. 验证
在终端输入以下代码, 出现 id_rsa、id_rsa.pub 两个文件即表示生成成功.
- id_rsa: 私钥
- id_rsa.pub: 公钥
cd ~/.ssh && ls
二、给 Gitee 和 GitHub 添加公钥
1. 查看公钥
在终端输入以下代码查看公钥
cat ~/.ssh/id_rsa.pub公钥大概长这样 😠 
2. 给 Gitee 添加公钥
相关信息
点击个人头像 设置 --> SSH 公钥 --> 标题(随便填) --> 公钥(上一步获取的公钥)

3. 给 GitHub 添加公钥
提示
- 点击个人头像 设置 --> SSH 与 GPG 公钥 --> 新建 SSH 秘钥 --> 标题(随便填) --> 公钥(上一步获取的公钥)
- 点击个人头像 Settings --> SSH and GPG keys --> New SSH key --> 标题(随便填) --> 公钥(上一步获取的公钥)



注意
什么,想知道我的 GitHub 为什么是中文 🥺, 油猴🐵 了解以下 🤪
GitHub 中文版插件 , 油猴配合中文版脚本可以让你更好的浏览 Github
4. 验证公钥是否添加成功
在终端输入以下代码, 返回下图内容即表示添加成功
ssh -T git@github.com
ssh -T git@gitee.com
三、给 GitHub 源码仓库添加私钥
1. 获取私钥
在终端输入以下代码,可获取私钥, 大概长下图这样
 cat ~/.ssh/id_rsa
2. 给源码仓库设置私钥
相关信息
- 源码仓库 设置 --> 机密和变量 --> 操作 --> 标题(需要记住) --> 私钥(上一步获取的私钥)
- 源码仓库 Settings --> Secrets and variables --> Actions --> Name(需要记住) --> Secret(上一步获取的私钥)


四、Gitee 创建镜像库
在 Gitee 创建一个镜像库, 当我们 在源码库 提交代码时, 先构建好 github.io 再同步到 gitee

五、修改 workflows
在 .github/workflows/autodeploy.yml 添加以下代码, 按注释修改即可
async-gitee:
  # 需要 deploy 这个 job 执行完再执行当前脚本
  needs: deploy
  runs-on: ubuntu-latest
  steps:
    - name: Sync to Gitee
      uses: wearerequired/git-mirror-action@master
      env:
        # 替换为 源码仓库中设置的私钥名称, 即上面步骤中 让记住的名称
        SSH_PRIVATE_KEY: ${{ secrets.HEXO_PRIVATE_KEY }}
      with:
        # 注意替换为你的 GitHub 源仓库地址
        source-repo: git@github.com:Pupper0601/Pupper0601.github.io.git
        # 注意替换为你的 Gitee 目标仓库地址
        destination-repo: git@gitee.com:pupper/Pupper0601.github.io.git以下是我的配置文件, 仅供参考你
autodeploy.yml
name: 自动部署
# 当有改动推送到master分支时,启动Action
# 教程文档 https://zhsher.cn/posts/8779/#4-3-%E6%96%B9%E6%A1%88%E4%B8%89
on:
  push:
    branches:
      - main
      # 2020年10月后github新建仓库默认分支改为main,注意更改
jobs: # 工作流
  deploy: # 自定义名称
    runs-on: ubuntu-latest # 运行在虚拟机环境
    name: 编译 hexo 博客
    steps:
      - name: 1. 拉取主库代码
        uses: actions/checkout@v4
      - name: 2. 拉取主题代码
        uses: actions/checkout@v4
        with:
          repository: Pupper0601/hexo-theme-anzhiyu
          ref: my-theme
          path: themes/anzhiyu
      - name: 3. 安装 Node
        uses: actions/setup-node@v3
        with:
          node-version: "16.x"
      - name: 4. 安装 Hexo
        run: |
          export TZ='Asia/Shanghai'
          npm install hexo-cli -g
      - name: 5. 缓存 Hexo
        uses: actions/cache@v3
        id: cache
        with:
          path: node_modules
          key: ${{runner.OS}}-${{hashFiles('package-lock.json')}}
      - name: 6. 安装依赖
        if: steps.cache.outputs.cache-hit != 'true'
        run: |
          npm install gulp-cli -g #全局安装gulp
          npm install --save
      - name: 7. 生成静态文件
        run: |
          hexo clean
          hexo bangumi -u #bilibili番剧更新
          hexo generate
          hexo algolia
          gulp
      - name: 8. 部署到Github
        uses: JamesIves/github-pages-deploy-action@v4
        with:
          token: { { secrets.HEXO_TOKEN } }
          repository-name: Pupper0601/Pupper0601.github.io
          branch: main
          folder: public
          clean-exclude: |
            public/.github
          commit-message: "${{ github.event.head_commit.message }} 由Github Actions更新"
  async-gitee:
    # 需要 deploy 这个 job 执行完再执行当前脚本
    needs: deploy
    runs-on: ubuntu-latest
    steps:
      - name: Sync to Gitee
        uses: wearerequired/git-mirror-action@master
        env:
          # 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
          SSH_PRIVATE_KEY: ${{ secrets.HEXO_PRIVATE_KEY }}
        with:
          # 注意替换为你的 GitHub 源仓库地址
          source-repo: git@github.com:Pupper0601/Pupper0601.github.io.git
          # 注意替换为你的 Gitee 目标仓库地址
          destination-repo: git@gitee.com:pupper/Pupper0601.github.io.git六、现在可以提交代码试试了(▽)
