iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
0

團隊使用的是Trunk-based development的Release Flow


圖片及更多資訊來自:https://cloud.google.com/solutions/devops/devops-tech-trunk-based-development

情境

某次Release出去的功能有問題,因此緊急做了Hot Fixed。但因為是在Release Branch上做Hot Fixed,當下修完後就忘了要Merge回Master了。問題便發生在下一次做Release時,因為Master上並沒有上次修復的改動,所以新的Release Branch上就不會有這個改動。因此問題便發生了。

需求

因此有了Master不得Commit,只能由其他Branch Merge進來;而Release Branch只能從Master做Merge或Cherry Pick過來的規則。

做法

上一章提到的是Commit-Msg。這一章要動工的地方是Pre-Commit,他在Commit-Msg之前就會先執行到。在這階段拿不到Commit-Msg,我們也沒有打算要拿。我們目的只有要判斷當前的Branch為何,來提醒開發人員現在在錯誤的Branch上開發。


Line 3 git rev-parse --abbrev-ref HEAD 為取得當前分支名稱,Pipe給 tr '[:upper:]' '[:lower:]' 轉成小寫。

Line 4 之後就是很簡單的判斷是否是release branch名開頭的Branch,又或者是Master了。

如此一來每次在Master Commit時,就會因為跑到Pre-commit階段判斷不通過,出現提醒我要到一班Branch做完事情再提交MR回到Master了 :3


上一篇
[D5] : Auto Check Msg Format At Commit
下一篇
[D7] : Git Template跟自動化有關係?
系列文
Re : 從懶開始的自動化生活30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言