以下代碼修改自 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 # 可自定義輸出的分支