1. 程式人生 > 其它 >使用 Github Action 將 Gatsby 站點部署到 Github Pages

使用 Github Action 將 Gatsby 站點部署到 Github Pages

個人部落格是基於 Gatsby 搭建的,之前已經利用 Github Action 部署在 Netlify 和 Vercel 上。本著不浪費 xxx.github.io 這個域。這次把 build 好的構建產物直接推到 gh-pages 分支


背景

由於 blog 原始碼和 構建產物可能不在同一個倉庫,因此可能出現兩種情形。


1.原始碼和構建產物共用一個倉庫,分別對應不同的分支(master和gh-pages)


2.原始碼和構建產物分別在不同的倉庫,分別對應不同倉庫的不同分支的分支

- person-blog 的 master 對應blog原始碼

- xx.github.io 的 master 或者 gh-pages 對應原始碼的構建產物

情況一必須開源,情況二多了更多的可能,當然我是第二種情況

準備

  1. 生成 access tokens

Tokens you have generated that can be used to access the GitHub API.

生成個人賬號分配的 github api 許可權列表的 token 待用。這裡只生成了對開源倉庫的操作許可權

  1. 在 xx.github.io 的 secret 中填入 acess token name對應secret name待用,value對應access token
  1. 在原始碼倉庫新建 github action 的 workflow

workflow

這裡直接在GitHub Action Marketplace 市場中找到了 [Gatsby Publish](Gatsby Publish · Actions · GitHub Marketplace),修改後的模板如下:


name: Gatsby Publish

on:
  push:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: enriikke/gatsby-gh-pages-action@v2
        with:
          access-token: ${{ secrets.ACCESS_GITHUB_API_TOKEN }} // 自定義 scret name
          deploy-branch: master
          deploy-repo: shanejix.github.io // 注意這裡直接是倉庫名稱

當然後續可以增加更多可定製的功能例如直接推到 gitee 或者 自己的伺服器上