[GitHub Actions] 設置 Deployment 審核保護機制

GitHub Deployment Protection Rules 設定指南

 

 

 

前言

一般 Git 需要審核的情境,主要有以下 2 種情境:

  1. 發 PR merge 到受保護的 branch 時
  2. Deploy 到 Production Environment 時  ⭐

這裡要提到的是第 2 種 ☝️

在 Deploy 時,當有團隊成員想要 Deploy 某些 change 到 Production Environment(或是極為重要的 Environment),需要其他團隊成員同意後才能 Deploy,為了防止有人偷偷上 code,在 GitHub 中有個功能叫做 Deployment Protection Rules,就能用來做這種審核的設置。

 

 

在 GitHub 頁面設置 Deployment Protection Rules

如果還未添加 Environment

請至 Settings > Environments,點擊new environment

 

設置你的環境名稱

 

新增完 Environment 後,進入配置頁面

配置頁面最上面第一個設置就是 Deployment Protection Rules

打勾 Required reviewers即可開啟這個功能

Add up to 6 more reviewers最多可以添加 6 個審核者

Prevent self-review 可以防止有人自己 Approve 自己的請求

 

Wait timer 有打勾的話可以設置等待時間(單位:分鐘),會在觸發 Deploy 審核關卡後開始計時(不管是否有 Approve),用來防止有人不小心上錯東西,可以延緩 Deploy 執行時間讓你來的及取消

 

看要不要給管理者權限的人開無敵通道

沒有的話就取消打勾 Allow administrators to bypass configured protection rules

任何人 Deploy 都要經過審核

 

設定好後即可 Save

 

 

設置GitHub workflow yaml

在 job 中要設置 environment,GitHub 才會將牠們關連起來


jobs:
  build-and-push:
    environment: prod       # here
  

就加一行就好,就是這麼簡單~

 

 

Deployment Protection Rules 審核流程

當觸發 pipeline 時,GitHub 會去找對應的 environment 設定

若是這環境有開啟 Required reviewers,該 job 即會暫停動作 (status:Waiting)

 

GitHub 會寄 mail 通知 reviewer 們

 

有人 Approve 後就會繼續 Deploy了

 

是誰 Approve 的也會顯示在 action 中,方便抓戰犯 😈

 

 

End