打造高效小團隊 - 團隊程式碼提交流程 && 規範

莊文達發表於2019-12-11

程式碼提交規範 && 升級調整

本系列想跟大家分享一下我近一年的管理經驗,分享一下我們團隊的一年走來的優化之路「非技術」,讓大家少踩坑,以及如何協作,管理者容易遇到的問題,以及技術上,工作上,如何與同事溝通、跨部門如何溝通有效率、如何分組、站會有沒有用? 等等,一年到頭,想和大家交流一下經驗。

背景

專案早期

不管前端還是後端,專案早期,我們是有 master 被保護分支,以及 dev 測試分支的,我們的提交流程是:所有人往 dev 合併程式碼,進行測試封版,測試通過直接把 dev 合併到 master 進行升級。隨之而來發現了問題:

專案中期

我們不能保證 dev 上的程式碼全部測試通過,因為沒有充足的測試時間,而且不斷有新的提交湧入,dev 直接合併到 master 肯定是不夠穩妥的,這樣的 dev 沒有任何意義,隨著研發任務強度越來越高,索性廢棄了 dev ,直接合併到 master , master 分支做持續整合到測試環境,每週二升級生產環境。每週三打 TAG,期間有迭代直接提交,直到下週二繼續升級,如果非常緊急,那就基於 git tag 基礎上修改,提交,升級生產。

反思

好景不長,隨著研發任務的進一步提升,問題接踵而來,新業務測試不熟悉,測試時間長,每週二11點還沒測試完畢,甚至每週二晚9點多才發現某某功能需求有問題,還會有其他小組影響另外小組的進度(關於小組以後單獨講)。這讓研發叫苦不迭。每週二的 升級日 變成了 “加班日” ,雖然每週只有一天,且第二天可以晚點來上班,但是連續兩週下來,還是有個別同事出現了嚴重的負面情緒,怕影響其他人,所以需要迅速解決這個問題。大刀闊斧的調整流程!

參考資料

上文資料請大家簡單看一看,我們經過討論做了調整,但是基本原理不變。

調整

研發 隨寫隨提,測試 隨提隨測,運維 隨測隨更。隨時測試,隨時更新,隨時升級生產環境。

協商一個時間點,比如每天 19:30,過了 19:30 的需求、bug,明天在調整,儘早回家休息。

研發職責

研發負責人還是像以前一樣,多建立一個 dev 分支,用於測試,這裡對 dev 的功能做下說明:

dev 分支

dev 分支就是測試環境,我們把 CI 從 master 換成 dev

這個分支,不需要有許可權控制,研發根據 禪道 或者 card 上的任務,從 master check 出一份分支

以 禪道 bug http://xx.104.96.233:60888/zentao/bug-view-11568.html 為例

  • 我們為分支命名為: fix-bug-11568

  • 修復 BUG

  • commit 程式碼寫好 msg:fix xxx , merge 到 dev 「fix-bug-11568 分支此時不要刪除」

  • 通知相關人士進行測試

  • 測試失敗「打回重新提交」,測試成功點選「關閉」通知研發可以了。

  • 研發發起 PR 從「 fix-bug-11568 分支 (注意!不是 dev)」到 Master 後 「 fix-bug-11568 」由管理員合併並刪除

  • 此時 Master 隨時可以升級到生產。

這樣會比較麻煩,於是參考 閒魚技術 我們也自研了一套流程工具,具體下次專門出篇文章講講。

研發禁止的

  • 禁止從 dev 分支 check 程式碼,因為你要保證合併到 master 的只有你自己的,沒有其他人沒測試的,如果從 dev check 程式碼,合併到 master 相當於 dev 合併到 master。
  • 禁止 merge dev 到 master ,這樣 dev 分支沒意義。

一些問題

大家可能覺得極為繁瑣,比如:

  • 需要根據 ISSUES 建立分支名稱
  • 需要通知測試測試
  • 測試需要通知研發成功/駁回 等等。

研發會寫 devops 工具確保大家能逐漸自動化,只是需要一些時間。可以通過一些 CLI + git 鉤子/ 禪道 傳送郵件等等,達到減少溝通成本。

測試職測

目前測試的同事需要收到解決的問題快速進行測試,快速通知研發結果。等待之後的郵件提醒。

運維職測

原有的 CI 指令碼有小調整 (dev),生產升級也有小調整 (不能從 qmenhu 直接拽包)

調整伺服器 Git hooks ,當有 push 或 merge 請求,查詢 BUG 編號,是否已經關閉,關閉的 bug 或 feature 才可以 review -> merge,否則 伺服器直接駁回。

總結

一切為了團隊更高效的解決問題,有充分的的個人時間。

後續任務

打造高效小團隊 - 團隊程式碼提交流程 && 規範

--- git hooks 詳情 ---

  • cli 程式「詳情看:閒魚技術

  • git hook 「詳情看:流程規範

  • 郵件通知 「減少溝通成本」

  • ISSUES 平臺的自動化管理

工具

www.npmjs.com/package/zin…

我把工具釋出在 npm 上了,沒有開源,需要的可以借鑑一下,下次講的時候,我會抽出一些通用的開源,現在先讓內部 “打磨一下”

預覽

打造高效小團隊 - 團隊程式碼提交流程 && 規範

以後單獨抽一章講下,程式碼很簡單(5個小時工作量),主講思路,以及如何才能做好簡單的 devops,節省所有人的時間。

原文

github.com/pkwenda/Blo…

相關文章