iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
DevOps

任務導向的Azure DevOps 系列文系列 第 8

Day 8 任務導向的Azure DevOps 系列文 - SDLC 的第三步,寫程式必然要有的版本控管- Branch Policy

  • 分享至 

  • xImage
  •  

前一天說到了GitHub flow 以及Branch的策略,今天就基於前一日的想法,來把設計給實作在Azure DevOps中。

Branch Policy

Git Branch Policy

前面有說到,我們有兩個Branch會面對不同的環境,分別是main會面對生產環境,dev則是會面對我們的測試環境。因此在Azure DevOps的設定上,就需要幫這兩個Branch建立保護策略,簡單說就是沒有人可以直接在這兩個Branch 上面進行Commit and Push,一定要經過Pull Request的方式審查後,才可以更改這兩個Branch。

Setting Branch Policies

這個Branch 是依照各專案的各個Branch 進行設定的,要先到專案的設定中->點選Repositories->Repo->Policies->Branch Policies。

main Branch Polocies

main

這裡就要一條條簡單敘述一下Branch Policies 的設定了,首先先從main Branch的思維開始,因為是面對營運環境,因此main的head就代表的就是現在營運環境伺服器上面的版本,所以對於這個Branch 的保護,可以視為金融業的程式異動過版作業,相對的要規定的會不少。

  • On Require a minimum number of reviewers 需要最少數量的審核者。由於內部基本的流程,是開發單位的科,對於程式碼的review是先經過組長以及科長的核准,因此設定人數為2。
    • Off Allow requestors to approve their own changes,允許發動PR的人同意自己的PR,不同意自己審核,一定要經過他人。
    • On Prohibit the most recent pusher from approving their own changes,我如果解讀沒有錯,禁止最新的Pusher核准自己的變更,這意思是,如果在PR過程中,有人為了comment要進行調整程式的時候,推送者可以同意自己的變更。這裡其實有兩個角色,一個是requestors,一個是pusher,這兩個其實定義不同。不過組織內目前這兩個角色會是同一個,所以就不另外去說明,直接把他打勾起來。
    • Off Allow completion even if some reviewers vote to wait or reject,即使有些檢閱者選擇等候或拒絕,仍允許完成。這邊只要有檢閱者不同意,預設就不讓他完成這個Pull Request。
    • On When new changes are pushed,當有新的變更時,採取下面措施:
      • Require at least one approval on the last iteration,只需要最新的一個同意即可
      • Reset all approval votes (does not reset votes to reject or wait),將所有原本的同意都設回初始值,但不重設reject or wait
      • On Reset all code reviewer votes,所有的投票全部都設回初始值
  • On Check for linked work items,確保一定要有關連Workitem。這裡我跟內部同仁是有宣導過,這是強制的,即使在PR進入Dev的Branch也是一樣。因為所有的變更一定都有所本,不管是自己發現了甚麼問題要修正Bug,或是使用者有新的需求。沒有修改會沒有原因,所以強制一定要跟work item進行關聯。而且在子選項中,還有Required 以及Optional,這邊我們是強制選擇Required。
  • On Check for comment resolution,這是指如果在PR階段,有人給了comment,都應該要有所回應。由於main面對的是生產環境,因此只要有想法都應該要正面回應。這邊我們同樣是強制選擇Required
  • Off Limit merge types,限制合併類型,目前我們並沒有強制要用哪一種合併類型,因此這條就不勾起來。

Review Policy
另外,在 Automatically included reviewers的這個功能下,由於main是面對營運環境的,因此強制設定該科科長作為審核人。這表示在PR的時候,科長會被自動帶入一定要進行審核的動作。

Dev Branch Polocies

Develop Branch Policies

Develop Branch相對來說比較寬鬆,畢竟這是面對測試環境的,我們僅有要求:

  • On Check for linked work items:開發或修改一定要有所本,所以強制一定要關聯workitem。
  • On Check for comment resolution:這裡則是,如果有意見會警示,但不會強制不可往後走。

所有的變更一定有所本,只是是來自於自己心中希望改善的事項,或來自他人需求或建議。


上一篇
Day 7 任務導向的Azure DevOps 系列文 - SDLC 的第三步,寫程式必然要有的版本控管- 先從Repo 講起
下一篇
Day 9 任務導向的Azure DevOps 系列文 - SDLC 的第四步,給我來點自動化 - 淺談Hosted Pipeline
系列文
任務導向的Azure DevOps 系列文30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言