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 名稱,選擇 repoworkflow 的權限,按照需求選擇有效日期,最後點擊 Generate token
  7. 回到 repo,進入 Settings,左側欄點擊 Secrets and variables 展開選項,再選擇 Actions
  8. 點擊 New repository secret,輸入 HEXO_DEPLOY,複製剛剛產生的 token,貼到 Value 欄位,最後點擊 Add secret
  9. 觸發一下 source 分支的 push,稍微等一下就可以看到 Github Action 的執行結果了

參考資料