自從完成「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
命名,可自行決定名稱
name: website
on
必填的設定,Github Action提供各種事件供選擇觸發時機,這邊設定為
push
時執行,也可以針對多個事件指定分支。
# Triggered when code is pushed to any branch in a repository
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 的動作:
jobs:
publish:
再來是 publish 內需要哪些設定:
runs-on
必填的設定,使用哪種機器執行 workflow,像是 Ubuntu、macOS、windows server等 Github 提供的虛擬環境。
runs-on: ubuntu-latest
steps
定義有哪些任務,Job 由一連串的任務組成,可以替任務命名,會在 Github 上顯示。
uses 指定動作(Action),通常是一些重複性的執行動作,被打包成一個套件,可以在這裡直接使用,更多相關的套件可以到 Github marketplace 搜尋 。底下使用的是checkout一個新的分支並安裝Ruby。
steps:
# Reference the major version of a release
- uses: actions/checkout@v2
# Downloads a prebuilt ruby
- uses:
ruby/setup-ruby@v1
run 在虛擬機器 shell 上執行 command-line
steps:
- run: bundle install
- run: chmod +x ./script/cibuild
- run: ./script/cibuild
with 執行動作時可以加入參數,利用 github-pages 可以快速設定,我們指定將網站部署到 chenuin/chenuin.github.io 這個 repo 的 master 分支,需要上傳的目錄為 ./_site ,也就是Jekyll編譯好的檔案目錄。
steps:
- 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複製。
https://github.com/settings/tokens
再到專案的 Settings => Secrets => Actions (或下方連結),按右上角新增,命名 GH_PAT 並將剛剛複製的Token貼上。
https://github.com/[USER_NAME] /[REPO_NAME] /settings/secrets/actions
關於
GITHUB_TOKEN
可以看這部影片了解更多:
VIDEO
完整檔案如下:
name: website
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 ,可點選連結 查看。
三、查看執行結果
https://github.com/[USER_NAME] /[REPO_NAME] /actions
相關文章:
參考連結: