###### tags: `DevOps` `GitAction` # DotNet Core 3.1使用 Github Action 紀錄 近期稍微玩一下Github的GitAction功來完成CI/CD的功能,此筆記著重在整個Github Action使用Sop,故 1.不在yml檔案如何撰寫多加著墨。在[Trigger部分(on)](https://reurl.cc/zeVzVa)直接使用Github Template預設的設定(在push master與pull request master狀況下做觸發)。但一般為了要省Server資源,通常只建議在PR Merged Closed時候做一次。 2.請注意自己Project DockerFile裡的csproj Path與yml裡的Build DockerFile Path ,務必要設對 ## GitAction Flow ![](https://i.imgur.com/ipsz2Wi.png) ## CI (Continuous integration) ### CI 步驟 - Build:執行dotnet restore與build指令 - Test:執行dotnet test指令 - Login Git Server - Build Docker Image - Push Docker Image - Run CD.. ### 實操步驟 - Step1:直接在Repository點選Action,並點選相對應平台建議的yml產生template ![](https://i.imgur.com/D4T7GLH.png) - Step2:修改yaml內容,基本上預設內容幾乎都不用動,唯一可能會動到的就只有dotnet-version要確認正確版本,目前使用dotnet 3.1,所以要將5.0.x改成3.1.x。在檔案建立後,Github會自動新增workflow資料夾並在此路徑下生成yaml檔案。 ![](https://i.imgur.com/EejqZKK.png) 如果要在PR結束時才啟動Action,On的區塊寫法參照如下 ![](https://i.imgur.com/y02dWQH.png) - Step3:View Action看結果 ![](https://i.imgur.com/QiLEIHA.png) ### Build Docker Image並發布到Package (Github Package) - Step1:New Personal access tokens 至右上角的個人選項,點選Setting->Developer settings->Personal access tokens ->點選new token。輸入Note、有效期限與Select scopes (為了方便先全勾) ![](https://i.imgur.com/EvaEfgW.png) ![](https://i.imgur.com/2J1ybqi.png) - Step2:設定Repository Actions secrets 至Repository的Setting->Secrets設置存取庫Key值設定,將第一步新增的Key值複製到內容處 ![](https://i.imgur.com/HwUWhZv.png) ![](https://i.imgur.com/fuAoR9E.png) - Step3:修改yaml檔案 ![](https://i.imgur.com/6jUFk4h.png) - Step4:View Action看結果 ![](https://i.imgur.com/ZohaAYN.png) 跑完Docker push後,你可以在自己的package頁面看到Build好的Image檔案 ![](https://i.imgur.com/1UorEHf.png) ### Pull Image and Run Docker - Step1:直接從Package Pull docker image ![](https://i.imgur.com/5sWGg3d.png) ![](https://i.imgur.com/Rdq8gkp.png) - Step2:Run Docker ![](https://i.imgur.com/pVXi0jj.png)