---
# System prepended metadata

title: DotNet Core 3.1使用 Github Action 紀錄
tags: [GitAction, DevOps]

---

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

