CI 的工具有很多,常見的可能有 Jenkins、GitLab CI、GitHub Actions 等等,不同的工具當然有各自的優缺點,但在運作與設定上也有許多共同之處。
雖然這些工具我或多或少都有接觸過,但我處理比較多的是 GitHub Actions,所以這篇就以 GitHub Actions 為主來進行介紹。
想要解鎖 GitHub Actions 其實很簡單,只要你的專案存放在 GitHub 上就行了,Public 專案的話可以免費使用,如果是 Private 就會有相對應的收費囉 付費解鎖 。
而只要你在專案的 .github/workflows/
這個目錄下撰寫你的 CI 腳本,當每次觸發腳本的運行條件時,GitHub 就會自動執行腳本。
而這些腳本必須使用 YAML 文件來撰寫,如果對 YAML 不了解的話可以先看看 YAML - 維基百科,自由的百科全書 ,有個基本認知之後再回來繼續。
放在 .github/workflows/
目錄下的腳本其實並沒有限制數量,你可以將許多不同的工作寫成不同的腳本來設定,下面我用一個執行 E2E 測試的腳本當作範例,快速說明一下設定檔的架構:
# 設定這個 workflows 顯示的名稱,會在 repo 的 Actions 頁籤看到
name: E2E Tests
# 這個 workflows 的觸發時機
on:
# 設定可以透過 GitHub Webhook 使用 e2e_test 這個事件來觸發 workflows
repository_dispatch:
types: [e2e_test]
# 設定排程每天晚上 12:00 執行
schedule:
- cron: '0 0 * * *' # every day at midnight at UTC+8
# 實際運行的工作腳本
jobs:
# Jobs 下可以設置多個工作,會直接使用 jobs 內的物件名稱來作為 job id
# 這邊的範例只有設置 test,但其實可以設置多個,也可以自行命名
test:
# 基於什麼環境來運作腳本,可以在下面的連結找到由 GitHub 提供的 runner 環境
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on
runs-on: ubuntu-latest
# job 的具體步驟
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.PAT_TOKEN }}
submodules: 'recursive'
- uses: actions/setup-node@v3
with:
node-version: '16.x'
cache: 'yarn'
- name: Install dependencies
run: yarn install
- name: Install Playwright
run: npx playwright install
- name: Ensure Playwright dependencies are installed
run: sudo npx playwright install-deps
- name: Run Playwright tests
run: npx playwright test
env:
PLAYWRIGHT_USERNAME: ${{ secrets.PLAYWRIGHT_USERNAME }}
PLAYWRIGHT_PASSWORD: ${{ secrets.PLAYWRIGHT_PASSWORD }}
PLAYWRIGHT_EMAIL_CREDENTIALS: ${{ secrets.PLAYWRIGHT_EMAIL_CREDENTIALS }}
PLAYWRIGHT_EMAIL_TOKEN: ${{ secrets.PLAYWRIGHT_EMAIL_TOKEN }}
PLAYWRIGHT_INTERNAL_TOKEN: ${{ secrets.PLAYWRIGHT_INTERNAL_TOKEN }}
PLAYWRIGHT_DOMAIN: https://storipress.dev
PLAYWRIGHT_API_HOST: https://api.storipress.dev
GitHub Marketplace 是一個讓開發者把自己寫的 GitHub 工具上架給其他人使用的地方,其中 Apps
分類包含了各種第三方服務的整合工具, Actions
分類就是可以讓你直接在 GitHub Actions 中使用的工具。
而且因為 GitHub 目前是 Open source 的重鎮,所以許多常用的工具其實都有 GitHub Actions 的版本並上架到 GitHub Marketplace 方便我們直接使用。
像是官方的 Action: actions/setup-node@v3 就是個一個使用率極高的 Actions,在撰寫 job steps 的時候,只像這樣加入就可以在你的 CI 環境中設置好 Node.js 16 版,而且連 yarn 的快取也幫忙設定好了。
- uses: actions/setup-node@v3
with:
node-version: 16
cache: 'yarn'
今天的內容比較偏向是 GitHub Actions 的基礎使用說明,目的是在讓你比較輕鬆的理解方向概念,不過隨著情境的不同,可能會需要使用到這篇沒有提到的設定選項時,更深入詳細的說明還是要去看官方文件喔。
明天就來分享一下我在設置 GitHub Actions 時曾經踩過的坑,跟一些實用的小技巧吧。