iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
DevOps

DevOps平台的能力架構系列 第 9

Day09 - Source code branching

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20200924/20129694xIvwLNA3TU.jpg

我確實說過我們將在今天的文章中討論continuous integration,但是在此之前,我們應該研究如何組織源代碼以真正支持ci。 所以今天讓我們先來討論分支策略。

分支開發v.s.主幹開發

分支開發

https://ithelp.ithome.com.tw/upload/images/20200924/20129694PUvWalijgC.jpg
分支開發是我們常看到的開發方式,最有名的應該就是git flow了。

分支開發在以下情況比較適合:

  1. 需要比較高度管理的情況,例如公司中junior developer或co-op比較多,需要senior developer時常提供建議和品管。
  2. 不需要快速推出新功能的軟體,這類軟體注重的是性能改善,需要比較多時間fine tune。

分支開發在開發過程中不需要考慮合併的問題,不過壞處是在合併時需要一次測試所有變化。也代表著需要一段code freeze period和integration period.

而需要比較快速做出變動的話就需要利用主幹開發法了。主幹和分支的最大差別在於分支的開發時間,分支開發裡,分支存活的長度可能是幾天到幾個禮拜。而在主幹開發裡,每一個分支的開發頂多是幾個小時。

主幹開發

https://ithelp.ithome.com.tw/upload/images/20200924/20129694S5G7wkZtvb.jpg
主幹開發是在主幹中維護所有代碼,任何分支都應短暫存在。要實踐continuous integration的話,主幹開發是不可或缺的。

根據2017 DORA報告,這三種行為能改善軟體交付性能。

  1. Code repository裡不要有超過三個branch。
  2. 每天最少合併一次branch到trunk。
  3. 不要有code freeze或整合階段。

主幹開發需要注意的要點是:

  1. 開發過程也該遵照INVEST原理,以小批量方式工作。
  2. 在合併回trunk之前,系統應要自動測試所有代碼。
  3. 開發人員負責確保其代碼正常工作,因此,如果ci過程失敗,則開發人員應該停止一切操作以解決問題,如果除錯過程花費的時間超過幾分鐘,就該恢復到以前的版本。

由此可見,為了能夠達到continuous integration,自動測試是必需的,之後的continuous testing會談到這部分。

明天我們會回到討論continuous integration裡的其他部分,讓我們隨時都有一份可以交付的軟體。

< 上一篇 Day08 - Source code management
> 下一篇 Day10 - Continuous Integration - Build automation


上一篇
Day08 - Source code management
下一篇
Day10 - Continuous Integration - Build automation
系列文
DevOps平台的能力架構19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言