TravisCI 沒有免費的方案了
上一篇提到整理完 Hexo 的部落格後,就開始整理自動化佈署。原本是使用 TravisCI 來做自動化的部署,跳過去看才發現 TravisCI 有要收費了,而 Github 有 Action 可以直接使用,所以就改用 Github Action 來做自動化的部署。只是需要再新增一個設定檔即可。
佈署的操作主要有幾個步驟:
- 安裝 Hexo CLI
- 執行
npm insall
安裝相依套件 - 使用
hexo generate
產生靜態檔案 - 設定 git 使用者資訊與 token
- 使用
hexo deploy
佈署到 Github Pages
TravisCI yml 配置
原本的 TravisCI 的配置檔案是這樣的:
os: linux
language: node_js
node_js:
- '19.6.0'
dist: trusty
branches:
only:
- source
before_install:
- export TZ=Asia/Taipei
- yarn global add hexo-cli
- yarn global add hexo-deployer-git
install:
- yarn install
script:
- hexo clean
- hexo generate
after_success:
- git config --global user.name 'John Doe'
- git config --global user.email '[email protected]'
- sed -i'' "/^ *repo/s~github\.com~${GITHUB_TOKEN}@github.com~" _config.yml
- hexo deploy
cache:
directories:
- node_modules
Github Action yml 配置
參考了 Github 的說明文件,新增一個 .github/workflows
資料夾,加入 deploy.yml
的檔案,內容如下:
name: Hexo Deploy
on:
push:
branches:
- source
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '19.6.0'
- name: Set timezone
run: sudo timedatectl set-timezone Asia/Taipei
- name: Install dependencies
run: |
yarn global add hexo-cli
yarn global add hexo-deployer-git
yarn install
- name: Build and deploy
run: |
hexo clean
hexo generate
git config --global user.name 'John Doe'
git config --global user.email '[email protected]'
sed -i "/^ *repo/s~github\.com~${{ secrets.HEXO_DEPLOY }}@github.com~" _config.yml
hexo deploy
設定 DEPLOY_TOKEN
感謝 Jimmy Ho 大大 的補充:
如果你的 build 和 source 是在同一個 repo 的話,可以直接略過這個步驟,直接在上方的範例中,將 ${{ secrets.HEXO_DEPLOY }}
改成 ${{ secrets.GITHUB_TOKEN }}
即可。
配置完成之後,我們還需要在 Github 的專案設定中,新增一個 HEXO_DEPLOY
的 secret,內容是我們的 Github token。這樣就可以在 Github Action 中使用了。
新增 Github Token 的方式:
- 點選右上角的個人頭像
- 點選
Settings
- 點選
Developer settings
- 左側欄點擊
Personal access tokens
展開選項 - 選擇 Tokens(classic),右邊的內容會看到
Generate new token
按鈕,點擊後選擇Generate new token (classic)
- 輸入 token 名稱,選擇
repo
與workflow
的權限,按照需求選擇有效日期,最後點擊Generate token
- 回到 repo,進入
Settings
,左側欄點擊Secrets and variables
展開選項,再選擇Actions
- 點擊
New repository secret
,輸入HEXO_DEPLOY
,複製剛剛產生的 token,貼到Value
欄位,最後點擊Add secret
- 觸發一下
source
分支的 push,稍微等一下就可以看到 Github Action 的執行結果了