Gitee 如何自動部署 Pages?還是用 GitHub Actions!

冴羽發表於2021-12-24

Gitee Pages

在上篇《一篇教你程式碼同步 GitHub 和 Gitee》中,我們使用 GitHub Actions 解決了 GitHub 程式碼自動同步 Gitee 的問題,但我們的部落格倉庫程式碼同步到 Gitee 後,並不能像 GitHub 一樣自動部署 Pages,如果不使用付費的 Gitee Pages Pro 服務,那我們該怎麼實現 Gitee 自動部署 Pages 呢?

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 之類的關鍵詞。

最終,我們決定使用 Gitee Pages Action,檢視一下主頁的示例程式碼:

name: Sync

on:
  push:
    branches: [main]
  workflow_dispatch:

jobs:
  build:
    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.GITEE_RSA_PRIVATE_KEY }}
        with:
          # 注意替換為你的 GitHub 源倉庫地址
          source-repo: git@github.com:doocs/leetcode.git
          # 注意替換為你的 Gitee 目標倉庫地址
          destination-repo: git@gitee.com:Doocs/leetcode.git

      - name: Build Gitee Pages
        uses: yanglbme/gitee-pages-action@main
        with:
          # 注意替換為你的 Gitee 使用者名稱
          gitee-username: yanglbme
          # 注意在 Settings->Secrets 配置 GITEE_PASSWORD
          gitee-password: ${{ secrets.GITEE_PASSWORD }}
          # 注意替換為你的 Gitee 倉庫,倉庫名嚴格區分大小寫,請準確填寫,否則會出錯
          gitee-repo: doocs/leetcode
          # 要部署的分支,預設是 master,若是其他分支,則需要指定(指定的分支必須存在)
          branch: main

我們之前已經實現了 GitHub 程式碼同步 Gitee,這裡我們直接使用後半部分的自動部署 actions,結合上篇的 YAML 檔案程式碼,最終的修改如下:

name: syncToGitee
on:
  push:
    branches:
      - gh-pages
jobs:
  repo-sync:
    runs-on: ubuntu-latest
    steps:
      - name: Mirror the Github organization repos to Gitee.
        uses: Yikun/hub-mirror-action@master
        with:
          src: 'github/mqyqingfeng'
          dst: 'gitee/mqyqingfeng'
          dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
          dst_token:  ${{ secrets.GITEE_TOKEN }}
          static_list: "learn-typescript"
          force_update: true
          debug: true
          
      - name: Build Gitee Pages
        uses: yanglbme/gitee-pages-action@main
        with:
          # 注意替換為你的 Gitee 使用者名稱
          gitee-username: mqyqingfeng
          # 注意在 Settings->Secrets 配置 GITEE_PASSWORD
          gitee-password: ${{ secrets.GITEE_PASSWORD }}
          # 注意替換為你的 Gitee 倉庫,倉庫名嚴格區分大小寫,請準確填寫,否則會出錯
          gitee-repo: mqyqingfeng/learn-typescript
          # 要部署的分支,預設是 master,若是其他分支,則需要指定(指定的分支必須存在)
          branch: gh-pages

注意不要忘了在倉庫的設定裡新增 Secrets,輸入 Gitee 的登陸密碼,然後儲存名為 GITEE_PASSWORD

YAML 檔案語法報錯

如果 Actions 執行失敗並出現了這種錯誤:

這是因為你的 YAML 語法寫的有問題,可能是哪裡沒有對齊。可以在這個網址校驗下你的 YAML 檔案,也可以順便看下阮一峰老師的 YAML 語言教程

再次執行

修改了程式碼之後,我們可以再執行一遍 sh deploy.sh,然後在 GitHub 上檢視執行情況:

當執行成功,我們再檢視 Gitee 的地址,就會發現已經部署為最新的版本了。

至此,實現了 GitHub 和 Gitee 程式碼的同步和自動部署。

系列文章

系列文章目錄地址:https://github.com/mqyqingfeng/Blog

微信:「mqyqingfeng」,加我進冴羽唯一的讀者群。

如果有錯誤或者不嚴謹的地方,請務必給予指正,十分感謝。如果喜歡或者 有所啟發,歡迎 star,對作者也是一種鼓勵。

相關文章