這一系列前兩部份分別說明了單元測試與端對端測試,當我們撰寫完這些測試程式後,就可以利用 Jenkins 或 GitHub Actions 等 CI/CD 工具,來幫我們在整合或發佈之前進行測試。這一篇就先利用 Jenkins Multibranch Pipeline 來執行測試程式。
Jenkins 是一套古老的持續整合工具,而 Multibranch Pipeline 是 Jenkins 讓我們可以針對不同的分支去執行自動化作業的方案之一。在 Multibranch Pipeline 作業中 Jenkins 預設會去專案目錄內搜尋 JenkinsFile
檔案,並依此檔案的內容執行指定的自動化作業。
stages {
stage ('Stage 1') {
when {
branch 'master'
}
steps {
...
}
}
stage ('Stage 2') {
steps {
...
}
}
}
JenkinsFile
檔案是利用 Groovy 語法所撰寫,如上面程式,我們可以在此檔案中,去定義每一站的自動化步驟,或是指定只在特定分支中執行特定作業。
因此,我們可以在範例專案中建立 JenkinsFile
檔案,並在此檔案中指定依續執行:
安裝 NPM 套件
執行單元測試作業
執行端對端測試作業
…
由於在範例專案的 package.json
已經建立了 Terminal 終端機使用的指令,因此可以在 JenkinsFile
中使用 npm run
命令來執行這些指令。
stages {
stage ('Package Restore') {
steps {
bat 'npm install'
}
}
stage ('Run Unit Testing') {
steps {
bat 'npm run test:headless'
}
}
stage ('Run E2E Testing') {
steps {
bat 'npm run e2e:run'
}
}
}
順帶一提,若要在 Jenkins 專案版上顯示單元測試圖表,可以安裝 karma-junit-reporter
套件,並修改 test:headless
命令輸出的報表:
"test:headless": "ng test --watch=false --browsers=ChromeHeadless --code-coverage --no-progress --reporters spec,junit",
這一篇利用 Jenkins Multibranch Pipeline 執行自動化作業,接下來會說明如何利用 GitHub Action 執行自動化作業。