TravisCI to Github Actions

TravisCI 沒有免費的方案了

上一篇提到整理完 Hexo 的部落格後,就開始整理自動化佈署。原本是使用 TravisCI 來做自動化的部署,跳過去看才發現 TravisCI 有要收費了,而 Github 有 Action 可以直接使用,所以就改用 Github Action 來做自動化的部署。只是需要再新增一個設定檔即可。

佈署的操作主要有幾個步驟:

  1. 安裝 Hexo CLI
  2. 執行 npm insall 安裝相依套件
  3. 使用 hexo generate 產生靜態檔案
  4. 設定 git 使用者資訊與 token
  5. 使用 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 的方式:

  1. 點選右上角的個人頭像
  2. 點選 Settings
  3. 點選 Developer settings
  4. 左側欄點擊 Personal access tokens 展開選項
  5. 選擇 Tokens(classic),右邊的內容會看到 Generate new token 按鈕,點擊後選擇 Generate new token (classic)
  6. 輸入 token 名稱,選擇 repo 與 workflow 的權限,按照需求選擇有效日期,最後點擊 Generate token
  7. 回到 repo,進入 Settings,左側欄點擊 Secrets and variables 展開選項,再選擇 Actions
  8. 點擊 New repository secret,輸入 HEXO_DEPLOY,複製剛剛產生的 token,貼到 Value 欄位,最後點擊 Add secret
  9. 觸發一下 source 分支的 push,稍微等一下就可以看到 Github Action 的執行結果了

參考資料