banner
9527DHX

9527's xLog

无声无色的 X 空间 同步博客内容 | 内含限定博文 | 高可用性
github
twitter_id

使用 Github Actions 和 Netlify/Vercel 實現自動部署 Hexo 博客

以下代碼修改自 Hexo 官方文檔:在 GitHub Pages 上部署 Hexo,本教程需要結合上述或其他教程使用。
使用前,請先在倉庫中建立 .github/workflows/xxx.yml,名字你喜歡。

這個工作流文件主要實現了以下流程:
用戶在本地修改 Hexo 內的文章,將更改同步到 Github,觸發 Github Actions,根據 .github/workflows/xxx.yml 生成新的靜態文件,並將文件更新到同倉庫內的 gh-pages 分支(可自定義),而 Netlify/Vercel 則可通過預先的設置拉取 gh-pages 分支並直接進行網站的部署。

相比其他方式,本方法將構建的過程搬到了 Github Actions 上進行。
最後一個步驟使用的 peaceiris/actions-gh-pages 這個工作流預設還有更多的玩法,詳情可查閱:GitHub Pages action - GitHub Marketplace

name: Build and Deploy # 可自定義工作流的名稱

on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@v4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          submodules: recursive
          
      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"

      - name: Cache NPM dependencies
        uses: actions/cache@v4
        with:
          path: node_modules
          key: ${{ runner.OS }}-npm-cache
          restore-keys: |
            ${{ runner.OS }}-npm-cache

      - name: Install Dependencies
        run: npm install

      - name: Build
        run: npm run build

      - name: Upload Pages artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: ./public # 可自定義Hexo輸出的目錄

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v4
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public # 可自定義Hexo輸出的目錄
          publish_branch: gh-pages # 可自定義輸出的分支
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。