跳到主要內容

發表文章

[DevOps] 實作軟體CI/CD運行架構 - ASP.NET Core test unit 單元測試

ASP.NET Core的單元測試(Test Unit)建置方式參考: MSTest : https://ithelp.ithome.com.tw/articles/10209386 建置出的UnitTest.cs class中可以建立多個[TestMethod],若以ASP.NET Core的project來看,就是在UnitTest.cs中針對要測試的controller進行測試,new一個欲測試的controller instance,叫用要測試的controller function,傳入測試的參數即可。 Controller function回應的result可用原有的 Assert 判斷是否符合預期結果,或是第三方的 FluentAssertions 。 FluentAssertions : https://marcus116.blogspot.com/2019/04/unittest-fluent-assertions.html 執行測試 : [測試] -> [執行] -> [所有測試] 將資訊存入log file 透過Nuget安裝NLog.Config和NLog.Web.AspNetCore: 安裝後可看到project多了一個NLog.config檔案: 打開NLog.config,依序在Targets及Rules區塊新增以下設定 Targets <target name="logfile" xsi:type="File" fileName="C:\temp\log\${shortdate}\debug.log"         layout="${date}| ${level} | ${message}"/> <target name...

[DevOps] 實作軟體CI/CD運行架構 - CI part

DevOps觀念中一項很重要的環節就是要有自動化的CI/CD流程,而最常被用來實作CI/CD的tool就是Jenkins,以下說明如何一步步透過Jenkins建立CI/CD流程。 我們將實作分成CI和CD兩個階段,在CI的部分中我們先實作目標為"當有新的source code就觸發自動build code,並紀錄回傳結果"。 實作步驟如下: 1. 將source code上傳至Github 2. 安裝Jenkins 3. 新增工作,設定Jenkins (Github, Nuget, MSBuild) 4. Message inform 5. 設定"當有新的source code就觸發自動build code" 1. 將source code上傳至Github     先申請一個Github帳號,開一個新的project,上傳你的source code (此處以ASP.NET Core MVC開發) 2. 安裝Jenkins     請參考連結:      https://dotblogs.com.tw/stanley14/2018/05/27/Jenkins_install     Jenkins的套件很容易安裝失敗,有時要重安裝幾次才會成功,也可以之後要用到再安裝。所以如果真的安裝不上去就先跳過安裝即可。 3. 新增工作,設定Jenkins (Github, Nuget, MSBuild)     請參考連結:       a. 設定Nuget, MSBuild      https://ithelp.ithome.com.tw/articles/10211030     - 安裝Visual Studio 2017 Enterprise (DevOps)     - MSBuild的設定如下:(設定MSBuild15即可) 路徑:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBu...

[DevOps] 實作軟體CI/CD運行架構 - CD part

接續上一篇CI,CD為Continue Deploy/Deliver,我們以ASP.NET project為例,分兩種: 1. 僅Copy檔案到指定位置 2. IIS部屬 1. 僅Copy檔案到指定位置 參考連結: https://dotblogs.azurewebsites.net/stanley14/2018/06/19/Jenkins_CopyArtifact_plugin 與連結不同的是: - 在"管理Jenkins -> 組態設定"中,請先設定好Jenkins主機的IP(不要用"localhost"): - "(2)Jenkins Master設定" 到Agents區塊,選固定,按下Agent protocols如下圖: 選擇一個port當作與Slave節點溝通的port。 - 接著在 "(3)Master新增Slave節點" 新增節點中的設定裡,要將port設定上去 ( Port前面要加":" ): -在 "(6)封存成品" 設定完成後, 在"建置"中加入如下: - 在"(7)Slave 複製成品並進行佈署(pipeline)"中,pipeline script要先安裝Jenkins plugin "Pipeline: Groovy",安裝成功後重新登入。 Sample code for pipeline script: node('CD_server') { stage('Stage 取得Build版本'){ script { step ([$class: 'CopyArtifact', projectName: 'CiCdTest', target: 'Infra']); } } /*stage('Stage 停止服務'){ ...

Golang 開發筆記 (一)

安裝Golang開發套件: 前往官網下載: https://golang.org/ 此處使用go1.14.1.windows-amd64.msi for Windows。 關於Go的一些必須知道的觀念:      Golang — GOROOT、GOPATH、Go-Modules-三者的關係介紹     Go 的 build, run, install 等指令         "go run xxx.go" 針對單一檔案         "go run ." 針對當前路徑下所有 .go 檔 相關的編程教學:      初學 Golang 30 天 安裝編輯開發的IDE tool:     VSCodeUserSetup-x64-1.43.2.exe

[Kubernetes] 運行一個單機上的Kubernetes service

Kubernetes 作為 container 的管理系統,將 docker 的運作提升到更自動化管理的目的。 延續上一篇 docker image的製作,再透過 Kubernetes 將 docker image 以 Kubernetes service 的形式運行,其指令如下: ***Create two service, one for http(port 2388) another for https(port 2389), both 2 replicas. Service for port 2388 kubectl run mgvinfospserver3-interactive-delopyment --image mgvinfospserver3:carrefour --port=2388 --replicas=2 kubectl expose deployment mgvinfospserver3-interactive-delopyment --type=NodePort Service for port 2389 kubectl run mgvinfospserver3-https-interactive-delopyment --image mgvinfospserver3:carrefour --port=2389 --replicas=2 kubectl expose deployment mgvinfospserver3-https-interactive-delopyment --type=NodePort 在上面創建 Kubernetes service 的指令中所指定的port 2388、2389指的是service內部所產生的pod的對外port,不是service外部開放的port,可以透過"kubectl get all"得知外部開放的port是多少 (通常是port 30000 - 32767),如果要指定外部開放的port,可在service運行後,執行指令來指定新的某個外部port對應到哪個service內部的pod的port。如下: ***[EX. 指定外部access port 7000 對應到POD的port 2388] kubectl port-forward s...

建立自我簽署的 SSL 憑證

開發網站初期,在測試https時需要一個自簽的個人憑證。 可以透過IIS管理介面簡單建立: 1. 開啟 IIS 管理介面。 2. 在 [連線] 窗格中,選取最上方的機器節點。 3. 在 [詳細資料] 窗格中按一下伺服器憑證。 4. 在 [動作] 窗格中按一下建立自我簽署的憑證。 5. 輸入 HOSTNAME 做為憑證易記名稱。 6. 選取個人做為憑證存放區。 但是此方法產生出來的憑證僅能匯出.pfx的檔案,無法取得.crt (憑證檔案) & .key (私密金鑰)。 若要完整從無到有建立一個憑證,與所有的檔案,可以參考以下網址: 如何使用 OpenSSL 建立開發測試用途的自簽憑證 (Self-Signed Certificate)

[Docker] 建立並運行一個ASP.NET Core網站的Docker container

要透過Docker將原本的ASP.NET Core網站包成image之前,請先確認你的ASP.NET Core的Program.cs已經設定了 http and/or https 的port宣告: public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseKestrel(options => { options.Listen(IPAddress.Any, 80); options.Listen(IPAddress.Any, 443, listenOptions => { listenOptions.UseHttps("MgvInfoSpServer.pfx", "1234"); }); }) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .UseApplicationInsights() .Build(); } * 請將 options.Listen() 中的 IP address 設成 IPAddress.Any 接著就可以將ASP.NET Core proj...