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 格式,不妨從方法一的最後一個步驟複製範本)