上一篇說明了如何利用 Jenkins 來執行自動化測試,而這一篇則會來說明 GubHub Actions 要如何執行自動化作業。
GitHub Actions 是一套由 GitHub 提供的 CI/CD 工具,我們可以利用 YAML 文件來定義每個自動化要執行的步驟。GitHub Actions 也允許工程人員把撰寫好的 Actions 工具發佈出來,給其他有需要的專案使用。
name: Action Name
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
...
要使用 Github Actions 很簡單,我們只要在 .github/workflows
目錄內加入一或多個 *.yml
檔案,GitHub 就會依此目錄的檔案內容設定執行自動化程式。
因此,如同 Jenkins 一樣,我們可以在 .github/workflows
加入 feature-action.yml
檔案,來定義當 Feature 分支被推上去之後所要執行自動化作業。
name: Angular Build
on:
push:
branches:
- feature/*
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.4
- name: Setup Node
uses: actions/setup-node@v2.1.5
with:
node-version: 18.x
- name: Package Restore
run: npm install
- name: Unit Testing
run: npm run test:headless
- name: E2E Testing
run: npm run e2e:run
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
如上面程式所示,此 GitHub Actions 作業使用 actions/checkout
與 actions/setup-node
來切換分支與指定 Node 版本;接著與前一篇相同,依續執行安裝 NPM 套件、執行單元測試作業與執行端對端測試作業等作業;最後,則將測試覆蓋資訊更新至 CodeCov 服務。順帶一提,若要讓測試覆蓋報表能整合至 CodeCov 服務,需要在 karma.conf.js
組態檔加入類型為 lcovonly
的測試覆蓋報表。
coverageReporter: {
dir: require("path").join(
__dirname,
"./coverage/ironman-2022-angular-test-example"
),
subdir: ".",
reporters: [
{ type: "html" },
{ type: "text-summary" },
{ type: "lcovonly" },
],
}
這一篇說明使用 GitHub Action 來執行自動化作業,透過 CI/CD 工具執行自動化可以讓我們推上程式時,執行如測試、發佈與通知等一連串的作業,來減少人工作業的時間與成本。