在國慶聯假前,此系列文每天的發文時都會以最簡陳述為主,以求在繁忙的日常中,至少能先維持挑戰鐵人賽的進度,並且逐漸拓展思路與系列構成。預期會在國慶聯假好好的去修文。
好,或許這篇應該在系列文前幾天就要講了,然後再搭配每個新產生的整合作業(測試、分析、產生文件)去逐步完善設定檔。但是對我來說鐵人賽其實很難在一開始就訂出一個完美的綱要,尤其是在時間緊迫的時候,通常是想到什麼與主題相關的就先進行產出。我會在後面修稿時重新進行組織,並在最後一天整理出一個適合循序閱讀的綱要、目錄。
既然要進行持續整合與部署,能重複建立一個相同的環境去執行開發、測試、整合、發布就是必須的是,此時就需要仰賴虛擬化技術,而近年成為主流的容器技術就成為首選。所以這篇就是講述如何透過 Docker 建立虛擬化環境,並透過 GitLab CI 建立一個持續整合的流水線。
Microsoft 官方有為 .NET Core 建立相關的 Docker Image,可以參照 Docker Hub 的 .NET Core 頁面。而如期頁面所述,相關的 Docker Image 分為以下幾種:
簡單來說,我們會使用 dotnet/core/sdk
進行各種與開發階段相關的作業,並且建置出一個 .NET Core 程式。若該程式是 FDD,就使用 dotnet/core/aspnet
或者 dotnet/core/runtime
去執行;若該程式是 SCD,就使用 dotnet/core/rumtime-deps
執行。
那我們就開始吧!首先先下載 dotnet/core/sdk
的Docker Image。
$ docker pull mcr.microsoft.com/dotnet/core/sdk:2.2
2.2: Pulling from dotnet/core/sdk
092586df9206: Pull complete
ef599477fae0: Pull complete
4530c6472b5d: Pull complete
d34d61487075: Pull complete
8bf998ab1ec6: Pull complete
45c553262948: Downloading 68.65MB/171.2MB
36e63bcdc5b0: Downloading 97.85MB/303MB
再透過 Volume 將專案程式碼 mount 到 Docker Container 中,去執行一系列的操作
$ docker run -it -v $PWD:/app mcr.microsoft.com/dotnet/core/sdk:2.2
root@1692fb18eb34:/\#
# dotnet build