跳至主要内容

GitHub Action 學習筆記

· 閱讀時間約 3 分鐘
Ckai

CI/CD Tools

以下是知名的 CI/CD 工具

  • CircleCI
  • GitHub Action
  • Jenkins
  • Travis

Workflow

欲使用 GitHub Action 需先定義 Workflow,此係自動化流程,由一個以上的工作(Job)組成。 Workflow 可由三種方法觸發:

  • Events
  • Scheduled
  • Manually

Workflow 由 yaml 檔編寫而成,存放於 GitHub 儲存庫。

Workflow 範例
name: build-and-test
on:
push:
branches: [ main ]
schedule:
- cron: '*/15 * * * *'
jobs:
build:
runs-on: ubuntu-latest

Runner

每個 Job 需要對應到一個負責執行工作的 Runner(伺服器)
Runner 會回報工作進度、日誌、工作結果。

Runner 範例
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Build server
run: ./build_server.sh
test:
needs: build
runs-on: ubuntu-latest
steps:
- run: ./test_server.sh

Job

每個 Job 由一個以上的 Step 組成。除非每個工作的執行需依賴其他工作,否則工作通常採平行執行。 上述代碼中,line 10 的 needs: build 表示 test 這項工作依賴 build,所以實際執行時不採平行執行,而是依順序執行。

Step

Job 中的每個 Step 都是按順序執行,每個 Step 當中又可以包含多個 Action。

Action

Action 是獨立且可重複利用的指令。(類似套件的感覺)
以上述代碼為例,line 6 的 uses: actions/checkout@v2 就是借用 GitHub Action Team 編寫好的 action。
line 8 的 run: ./build_server.sh 則是專案開發人員自行編寫的 action。

GitHub Action 操作流程

以下流程基於本文發布時的介面編輯

方法一:透過 GitHub 介面進行

  • 在 GitHub 儲存庫上方點擊 action 頁籤
  • 在「Search workflows」搜尋列搜尋專案關鍵詞(例:go)
  • 搜尋結果以卡片樣式呈現,在適合專案的卡片上點擊 Configure
  • 編輯系統產出的樣版檔案

方法二:在本地專案資料夾編輯

  • $ mkdir -p .github/workflows
  • $ touch .github/workflows/ci.yml
  • 編輯 ci.yml(若不熟悉 Workflow 格式,不妨從方法一的最後一個步驟複製範本)