###### 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

## 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

- Step2:修改yaml內容,基本上預設內容幾乎都不用動,唯一可能會動到的就只有dotnet-version要確認正確版本,目前使用dotnet 3.1,所以要將5.0.x改成3.1.x。在檔案建立後,Github會自動新增workflow資料夾並在此路徑下生成yaml檔案。

如果要在PR結束時才啟動Action,On的區塊寫法參照如下

- Step3:View Action看結果

### Build Docker Image並發布到Package (Github Package)
- Step1:New Personal access tokens
至右上角的個人選項,點選Setting->Developer settings->Personal access tokens ->點選new token。輸入Note、有效期限與Select scopes (為了方便先全勾)


- Step2:設定Repository Actions secrets
至Repository的Setting->Secrets設置存取庫Key值設定,將第一步新增的Key值複製到內容處


- Step3:修改yaml檔案

- Step4:View Action看結果

跑完Docker push後,你可以在自己的package頁面看到Build好的Image檔案

### Pull Image and Run Docker
- Step1:直接從Package Pull docker image


- Step2:Run Docker
