用 gitlab-ci 自動測試 django 專案

隨著手上的 django 專案越來越大,就會遇到改了 A 功能以後 B 功能爛掉的情況。這時候測試的重要性就顯露出來了。

雖然 django 自己有 Unit Test 功能,但是要每個人在 commit 前都手動跑一次測試有點太勉強,總是可能會有忘記測試,結果 commit 爛掉的 code 上去的機會。所以把測試的工作丟給 gitlab-ci,讓每次 push 的時候 gitlab 都能自動跑 django 的 Unit test,並把測試結果吐到 Slack 上面會是比較方便的作法。

要使用 gitlab-ci 自動測試,需要完成以下步驟:

  • 編寫 django 的 Unit test
  • 安裝/註冊一台或多台 gitlab-ci-runner,用來執行測試
  • 編輯專案根目錄的 .gitlab-ci.yml 設定檔

編寫 django 的 Unit test

可參考 django 關於測試的文件

安裝/註冊 gitlab-ci-runner

  1. 先到 gitlab 專案頁面,點選右上角的齒輪圖示,選取「Runners」。會在這個頁面看到 gitlab 提供給 runner 註冊的 URL 以及 token
  2. 我用來跑 runner 的機器是 Ubuntu,可參考這份文件安裝 gitlab-ci-runner
  3. 裝好後執行 gitlab-ci-runner,會提示您輸入剛剛看到的 URL 和 token
  4. 然後根據您需要設定其他項目,在這邊我選用 docker 環境來執行測試。gitlab-ci 會在 runner 上跑一個 docker 環境,把您的 django 專案丟到這個環境內測試。所以也會需要在 runner 上安裝好 docker。

安裝/註冊成功後,會在 gitlab 的 Runners 頁面看到剛剛註冊的 runner:

2017-05-18 下午4.57.20
設定好的 gitlab-ci-runner 已註冊進 gitlab

編輯 .gitlab-ci.yml

再來編輯 .gitlab-ci.yml 設定檔,這個設定檔定義了 gitlab-ci 要幫你做什麼,範例如下:

./shell/install.sh 的內容如下,我在這個檔案定義了 runner 在啟動 docker 之後、執行 django unit test 之前需要做些什麼:

這樣設定好之後,push 上 gitlab 就會在專案的「Pipelines」→「Builds」看到測試的狀況,如果測試成功就會在這個 Build 及 Pipeline 看到 passed 的標誌:

如果另外還有在 gitlab 設定和 Slack 的整合,Build 的結果也會一起吐到 Slack 上面。

Comments

comments

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料