點燈坊
State Pattern 是 OOP 中著名的 Design Pattern,當 method 的行為會隨著 field 而改變時特別有效。在本文中,我們將以 Angular 與 TypeScript 實現。
當開發環境都 Docker 化,最常遇到的問題就是開發環境該如何與測試環境分離,如 IDE 裝在 macOS,如 WebStorm / Rider / VS Code,且 code 也放在 macOS,但實際 build code 或跑測試,卻是在 container 內,因此勢必要將 macOS 的目錄與 container 共享。
當 Jenkins 的 job 執行失敗時,我們希望在 Slack 的 channel 能收到通知,如此可避免所有訊息都透過 Email,只有真正與人相關的訊息才使用 Email,讓 Slack 成為持續整合的訊息中心。
在使用 TDD 開發時,儘管單元測試執行速度較快,但可能僅執行一部分的單元測試而已;而整合測試與驗收測試更慢,實務上不可能真的花時間去等待測試結果,而是希望在背景不斷地執行,在本機配合 Docker 執行 Jenkins 後,只要每次有新的 commit,就會自動執行所有測試,並將測試結果傳送到 Slack。
雖然 .NET Core SDK 與 Jenkins 都各自提供官方 Docker image,但實務上使用 Jenkins 做持續整合時,我們會從 Jenkins 將 Git repository clone 下來,然後跑 dotnet test
執行單元測試,但 dotnet test
需要 .NET Core SDK 環境才能執行,因此我們必須建立自己的 Dockerfile,產生包含 .NET Core SDK 的 Docker image。
.NET Core 為 Microsoft 的跨平台解決方案,只要裝上 .NET Core SDK,就可在 Linux 執行與開發 .NET Core App,本文以 Ubuntu 為例。
雖然 Microsoft 官方提供 .NET Core 的 Docker image,但實務上建置環境時,可能先使用其他 server 的 image,然後再加裝 .NET Core SDK 環境,如此就需要自行建立 Dockerfile
,並建立自己的 image。