自從完成「Travis CI 自動 Jekyll 專案部屬 Github Pages 完整範例」很久沒有更新 Github Pages,近期上傳時卻發現CI執行失敗,並不是腳本有問題或編譯過程有錯誤,而是request被拒,所以即使換了Github Token依舊無法解決。
直到我發現 Travis CI 帳戶設定突然多了「Plan」,有免費的方案可以選擇,選擇之後再讓Job重跑居然就成功了,所謂的免費方案是給 10000 available credits,每次執行Job時就會扣點直到用完為止,之後可以一次性購買或者選擇月費方案。
Github Actions 是 Github 內建的功能,可以定義Repo自動化、執行CI/CD相關工作,因此決定將 Travis CI 的功能由 Github Actions 取代,以下將說明如何移除 myblog 原本 .travis.yml 的設定 ,以 Github Actions 自動部屬至 Github Pages。
一、選擇 Workflow 建立方式
方法一:
在專案根目錄新增目錄 .github/workflow/,並在 workflow/ 新增副檔名為 .yml的檔案。
方法二:
到 Github repo上設定
可更改檔名和底下的內容二、新增 Workflow
name 命名,可自行決定名稱
on 必填的設定,Github Action提供各種事件供選擇觸發時機,這邊設定為 push 時執行,也可以針對多個事件指定分支。
on: push
# Or ....
on:
# Trigger the workflow on push,
# but only for the main branch
push:
branches:
- main
jobs 接下來是最重要的部分,workflow是由一個或多的Job組成,預設情況下會同時執行,每個 Job 必須給一個唯一的 job_id,是由數字、字母或 _、 - 組成的字串,且字首只能由字母或是 _。因此我們第一個發布 - publish 的動作:
publish:
再來是 publish 內需要哪些設定:
runs-on 必填的設定,使用哪種機器執行 workflow,像是 Ubuntu、macOS、windows server等 Github 提供的虛擬環境。
steps 定義有哪些任務,Job 由一連串的任務組成,可以替任務命名,會在 Github 上顯示。
uses 指定動作(Action),通常是一些重複性的執行動作,被打包成一個套件,可以在這裡直接使用,更多相關的套件可以到 Github marketplace 搜尋 。底下使用的是checkout一個新的分支並安裝Ruby。
# Reference the major version of a release
- uses: actions/checkout@v2 # Downloads a prebuilt ruby
- uses: ruby/setup-ruby@v1
run 在虛擬機器 shell 上執行 command-line
- run: bundle install
- run: chmod +x ./script/cibuild
- run: ./script/cibuild
with 執行動作時可以加入參數,利用 github-pages 可以快速設定,我們指定將網站部署到 chenuin/chenuin.github.io 這個 repo 的 master 分支,需要上傳的目錄為 ./_site ,也就是Jekyll編譯好的檔案目錄。
- uses: crazy-max/ghaction-github-pages@v2
with:
repo: chenuin/chenuin.github.io
target_branch: master
build_dir: ./_site
env:
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
env 這裡分為 GITHUB_TOKEN和GH_PAT兩種,前者不需要任何設定、僅限於同一個 repo 內的操作,後者則是部署到其他 repo 使用的。(說明)
GH_PAT 設定方式,請先至 Settings => Developer settings => Personal access tokens (或下方連結),按右上角新增Token,scopes 可直接勾選 repo 並將Token複製。
再到專案的 Settings => Secrets => Actions (或下方連結),按右上角新增,命名 GH_PAT 並將剛剛複製的Token貼上。
關於 GITHUB_TOKEN 可以看這部影片了解更多:
完整檔案如下:
on: push
jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.6
- name: Install dependencies
run: bundle install
- name: Before srcipt
run: chmod +x ./script/cibuild
- name: Srcipt
run: ./script/cibuild
- name: Deploy to GitHub Pages
if: success()
uses: crazy-max/ghaction-github-pages@v2
with:
repo: chenuin/chenuin.github.io
target_branch: master
build_dir: ./_site
env:
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
檔案異動內容已經上傳至 Github ,可點選連結查看。
三、查看執行結果
相關文章:
參考連結: