CODING:小白都會(huì)用的代碼協(xié)作工具
經(jīng)常來我站的朋友有很多從事軟件開發(fā)、UI/UX 設(shè)計(jì)、產(chǎn)品設(shè)計(jì)等職業(yè)的,大家在各自的領(lǐng)域都會(huì)用到垂直領(lǐng)域內(nèi)的協(xié)同工具,這里就不再贅述有哪些代表者,但這些工具也好,服務(wù)也好,就好像一座座孤島,彼此之間的溝通協(xié)作并不能成為一個(gè)整體,對(duì)于出具規(guī)模的研發(fā)團(tuán)隊(duì)來說,如果提高團(tuán)隊(duì)的工作效率,協(xié)同溝通效率顯然已成為當(dāng)今互聯(lián)網(wǎng)產(chǎn)品大生產(chǎn)場景下的剛性需求。
痛點(diǎn)
早年間我曾在一家專為企業(yè)級(jí)路由器系統(tǒng)研發(fā)公司擔(dān)任測試工程師,當(dāng)時(shí)還沒有像 CODING 這樣覆蓋“產(chǎn)品→開發(fā)→測試”三大環(huán)節(jié)的研發(fā)管理系統(tǒng),三個(gè)部門的人各自為營,溝通方式基本靠開會(huì),研發(fā)組寫完的代碼灌入設(shè)備后給測試組,測試用例完全靠人肉文檔,一遍又一遍,反饋給研發(fā)后,那邊又不重視我們的報(bào)告,漏洞百出得不到有效記錄,又被產(chǎn)品經(jīng)理每天雪花般的新需求搞的想砍人;同時(shí)產(chǎn)品、研發(fā)、測試三方就需求設(shè)計(jì)、功能實(shí)現(xiàn)、產(chǎn)品可用性的探討,甚至可以說是爭執(zhí),已經(jīng)嚴(yán)重占用了大部分的生產(chǎn)時(shí)間,最后還是得加班完成各自的任務(wù)。我一直在想,當(dāng)時(shí)要是有 CODING 這樣的平臺(tái)就好了,嚴(yán)謹(jǐn)而科學(xué)的版本控制、代碼質(zhì)量管理、清晰的任務(wù)需求管理都可以幫助大家省去許多重復(fù)勞動(dòng)和時(shí)間成本、健康成本。
CODING 是什么?
使用 CODING 除了能克服上述問題,還能幫助一個(gè)研發(fā)團(tuán)隊(duì)從分支管理到代碼評(píng)審,從任務(wù)分派到里程碑制定,再到文件系統(tǒng)和 Wiki 沉淀等諸多方面,諸多細(xì)節(jié)去幫助開發(fā)者更加高效地協(xié)作。
CODING 企業(yè)版(后面簡稱 CODING)是面向開發(fā)團(tuán)隊(duì)的WEB軟件研發(fā)管理系統(tǒng),整個(gè)團(tuán)隊(duì)成員可以在里面進(jìn)行代碼管理(重中之重)、需求管理、持續(xù)集成、測試管理、缺陷管理、任務(wù)分配等功能,適用于傳統(tǒng)模式和敏捷模式的軟件研發(fā)項(xiàng)目和產(chǎn)品運(yùn)營,是一款真正意義上的 DevOps 全流程應(yīng)用。下面我們就來一一介紹 CODING 包含的各項(xiàng)核心功能,在正文展開前,大家先看一下 CODING 后臺(tái)管理界面左側(cè)的工具欄,一共 14 個(gè)項(xiàng)目,其中最核心的服務(wù)放在了中間,這么多的功能當(dāng)然是面向不同工種的同事了,下面來看看這個(gè) list:
各項(xiàng)目針對(duì)的使用人群及聯(lián)系
項(xiàng)目 leader 負(fù)責(zé)在迭代、工作管理、任務(wù)管理等模塊負(fù)責(zé)整個(gè)項(xiàng)目的進(jìn)度、數(shù)據(jù)分析等工作;
產(chǎn)品經(jīng)理負(fù)責(zé)在 Wiki、需求管理、文件系統(tǒng)中提供明確的產(chǎn)品需求;
研發(fā)工程師負(fù)責(zé)在代碼倉庫生產(chǎn)、維護(hù)代碼,進(jìn)行持續(xù)集成、環(huán)境部署等工作;
測試工程師負(fù)責(zé)在缺陷管理、測試管理中修 bug;
設(shè)計(jì)師負(fù)責(zé)在文件里上傳設(shè)計(jì)文件。
當(dāng)然,這里面有些項(xiàng)目不是專屬于哪類人群,有些是大家共同進(jìn)行協(xié)作溝通的地方,比如任務(wù)看板、Wiki、文件系統(tǒng)、工作管理等等。
產(chǎn)品經(jīng)理在 CODING 里能做什么
我們知道,作為產(chǎn)品經(jīng)理,他的日常任務(wù)就是搜集用戶需求、編寫產(chǎn)品功能書,設(shè)計(jì)產(chǎn)品原型,并在用戶反饋、UI/UX 設(shè)計(jì)、功能研發(fā)三個(gè)陣地來回穿梭,協(xié)調(diào),最后給用戶呈現(xiàn)一個(gè)令其滿意的產(chǎn)品。CODING 里涉及到產(chǎn)品經(jīng)理用的較多的應(yīng)該是 Wiki、需求管理、任務(wù)看板
CODING 支持將其他平臺(tái)的項(xiàng)目直接導(dǎo)入其中使用
Wiki
不得不說 CODING 的 WEB 界面做的簡潔而不失高效,Wiki 好似 Typora 的 Markdown 編輯界面,事實(shí)上這里也是支持 MD 語言編寫文檔的,產(chǎn)品經(jīng)理可以在這里為工程師、設(shè)計(jì)師提供盡可能完善的產(chǎn)品交互原型、產(chǎn)品解析文檔等等。
需求管理
需求管理客觀講不光適用于產(chǎn)品經(jīng)理,工程師的技術(shù)需求、其他部門人員的運(yùn)營需求都可以提出來,然后由 leader 將此需求分配給對(duì)應(yīng)負(fù)責(zé)人,這里就涉及到創(chuàng)建工作或關(guān)聯(lián)工作了。
看下,舉例,產(chǎn)品經(jīng)理根據(jù)用戶使用情況記錄并新建了一個(gè)需求,這個(gè)需求默認(rèn)狀態(tài)是“未激活”,而 leader 看到需求后邀請研發(fā)、設(shè)計(jì)的同事進(jìn)來關(guān)注,經(jīng)過討論溝通,認(rèn)為可以執(zhí)行添加此需求,則 leader 可以將需求狀態(tài)改為“已計(jì)劃”,設(shè)計(jì)側(cè)的同事接手開始干后標(biāo)記為“設(shè)計(jì)中”、然后交付給研發(fā)同事,狀態(tài)標(biāo)記為“研發(fā)中”,以此類推,直到需求被實(shí)現(xiàn)標(biāo)記為“已關(guān)閉”,在這個(gè)過程中,團(tuán)隊(duì)成員可以隨時(shí)看到需求實(shí)現(xiàn)狀態(tài),看到活動(dòng)日志以及關(guān)聯(lián)的各種附件、里程碑、任務(wù)、合并請求。
研發(fā)工程師的好伙伴:Git 代碼管理
CODING 的核心服務(wù)對(duì)象是研發(fā)工程師,關(guān)于對(duì)代碼庫的維護(hù)能力當(dāng)然是 CODING 最關(guān)注的地方,Git 也是這套系統(tǒng)里的重中之重,代碼的瀏覽、分支管理、發(fā)布管理、版本對(duì)比、合并請求當(dāng)然都不在話下。
在介紹代碼管理的幾個(gè)子功能前還是跟大家科普一下 Git 這套分布式代碼管理系統(tǒng)的基本原理。
傳統(tǒng)的代碼管理都是點(diǎn)對(duì)點(diǎn)的同步部署,也就是你和你的同事在各自的本地機(jī)器編譯完傳輸(或者也叫同步吧)到遠(yuǎn)程服務(wù)器或者直接發(fā)給架構(gòu)師/leader,然后由架構(gòu)師/leader將你們的代碼揉在一起,但這個(gè)過程很容易出問題,而 Git 則是由主開發(fā)者將代碼上傳到服務(wù)器后,其他開發(fā)者可以從服務(wù)器get到完整的代碼然后根據(jù)任務(wù)開發(fā)功能后創(chuàng)建為一個(gè)分支版本,并從自己本地機(jī)器測試后將生成的代碼推送回服務(wù)器。在這個(gè)過程中,主開發(fā)者可以發(fā)起代碼評(píng)審、處理代碼合并請求、有效控制產(chǎn)品版本,各個(gè)分支版本之間的代碼沖突也可以獲得有效避免。
代碼瀏覽
代碼瀏覽是最基礎(chǔ)的功能模塊,包括默認(rèn)分支 master 在內(nèi)的所有分支版本,主開發(fā)者(leader)都可以在這里看到,當(dāng)然也可以操作代碼的瀏覽、新建、上傳、下載;代碼支持在線編輯、路徑復(fù)制、按行查看等功能。
我們可以通過左上角的隱藏菜單切換到各個(gè)分支版本進(jìn)行代碼預(yù)覽。
分支管理
接下來是分支管理,一個(gè)代碼倉庫建立后會(huì)自動(dòng)生成一個(gè)默認(rèn)分支 master,但一般情況都不會(huì)在這上面進(jìn)行代碼修改,就像前文我們提到的,團(tuán)隊(duì)成員會(huì)按照 leader 分解的任務(wù)去實(shí)現(xiàn)對(duì)應(yīng)的功能模塊,而這個(gè)模塊都會(huì)有自己的分支版本,這樣各個(gè)功能在合并前都會(huì)自行演進(jìn),互不干擾。
在你的代碼完成后可以進(jìn)行推送到服務(wù)器上,發(fā)起合并請求
合并請求
Leader 可以在接到你的合并請求時(shí),可以在對(duì)應(yīng)界面添加代碼評(píng)審者,標(biāo)簽、關(guān)注者,這些人會(huì)是架構(gòu)師、測試工程師、產(chǎn)品經(jīng)理。
同時(shí)你可以在合并請求里看到代碼的改動(dòng)具體情況,代碼變動(dòng)部分會(huì)用綠色背景標(biāo)注。你可以關(guān)聯(lián)里程碑、任務(wù)、合并請求等,或者最底部留言輸入評(píng)論內(nèi)容,比如“小李這功能做得好,這代碼不錯(cuò)等等等…”
在創(chuàng)建合并請求時(shí)你會(huì)遇到“版本對(duì)比”,在“版本對(duì)比”界面選擇或輸入兩個(gè)不同的分支、標(biāo)簽、修訂版本號(hào)進(jìn)行對(duì)比,查看差異;版本對(duì)比可對(duì)代碼進(jìn)行審查與評(píng)論,系統(tǒng)會(huì)檢測比較版本能否自動(dòng)合并。
發(fā)布管理
當(dāng)完成一個(gè)里程碑的所有任務(wù)開發(fā)之后,你就可以在某個(gè)節(jié)點(diǎn)將此時(shí)的默認(rèn)分支標(biāo)記為一個(gè)版本,并發(fā)布這個(gè)版本。
除了上傳代碼,你需要詳細(xì)的記錄每個(gè)版本的“更新日期”、“改動(dòng)說明”、“版本對(duì)比”、“版本規(guī)劃”等內(nèi)容,CODING 支持預(yù)發(fā)布版本標(biāo)記。
關(guān)于持續(xù)集成
持續(xù)集成的概念誕生自 1991 年,就像我開頭提到的傳統(tǒng)協(xié)作方式遇到的諸多弊端,持續(xù)集成的推出就是為了解決開發(fā)團(tuán)隊(duì)每天大量的重復(fù)性編譯、測試工作,提高交付效率,在枯燥的電腦前,人類創(chuàng)造了像 Jenkins 這樣的自動(dòng)化集成系統(tǒng),它可以幫助人類完成每次版本誕生前枯燥的編譯、部署、自動(dòng)化測試工作,讓工程師們專注于開發(fā)
CODING項(xiàng)目可直接集成到騰訊云平臺(tái)上,同時(shí)支持多種運(yùn)行環(huán)境
在創(chuàng)建持續(xù)集成時(shí)你需要“代碼更新觸發(fā)”還是“手動(dòng)觸發(fā)”,選擇推送到某個(gè)指定分支時(shí)觸發(fā),以及用常規(guī)模式or云服務(wù)器模式進(jìn)行集成的執(zhí)行,云服務(wù)模式就是允許用戶可以將執(zhí)行環(huán)境部署到云端服務(wù)器,并且自行創(chuàng)建容器來執(zhí)行集成的構(gòu)建。
CODING 的持續(xù)集成是完全基于 Jenkins 的,兼容 Jenkinsfile 配置文件。
項(xiàng)目 leader 統(tǒng)籌規(guī)劃靠這些功能
除了工程師、產(chǎn)品經(jīng)理會(huì)頻繁用到代碼維護(hù)、Wiki、文件系統(tǒng)外,項(xiàng)目 leader 也可以使用 CODING 里的任務(wù)系統(tǒng)和工作管理兩個(gè)模塊。
任務(wù)系統(tǒng)
在任務(wù)系統(tǒng)里核心當(dāng)然是“里程碑”了,這個(gè)開發(fā)人員都很熟悉,CODING 支持在列表與甘特圖之間隨時(shí)切換查看里程碑,在里程碑詳情頁面你可以清晰的看到整個(gè)計(jì)劃的完成度、是否超時(shí),每項(xiàng)任務(wù)的完成情況,完成進(jìn)度,持續(xù)天數(shù)。
如果一個(gè)里程碑已經(jīng) reach,那么 leader 就可以選擇對(duì)應(yīng)版本創(chuàng)建版本發(fā)布,總之一句話,在 CODING 中你會(huì)發(fā)現(xiàn)設(shè)計(jì)者會(huì)將各個(gè)模塊盡可能的耦合在一起,盡最大努力方便使用者提高工作效率與協(xié)調(diào)效率。
工作管理
看到工作管理這個(gè)模塊,多少有些讓人有些迷惑,不是有任務(wù)系統(tǒng)了嗎?怎么還有一個(gè)工作管理,我想這個(gè)模塊純粹是為 leader 們設(shè)計(jì)的吧,工作管理中的事務(wù)是獨(dú)立于項(xiàng)目本身的,leader 們可以在里面分配一些時(shí)效性強(qiáng)、需要臨時(shí)突擊解決的問題,在里面可以關(guān)聯(lián)產(chǎn)品經(jīng)理發(fā)布的“需求”,或是關(guān)聯(lián)項(xiàng)目資源(里程碑、任務(wù)、合并請求)。
寫在最后
總的來說,CODING 是一個(gè)面向開發(fā)者的云端開發(fā)平臺(tái),提供 Git/SVN 代碼托管、任務(wù)管理、在線 WebIDE、Cloud Studio、開發(fā)協(xié)作、文件管理、Wiki 管理、提供個(gè)人服務(wù)及企業(yè)服務(wù),其中實(shí)現(xiàn)了 DevOps 流程全自動(dòng)化,為企業(yè)提供軟件研發(fā)全流程管理工具,打通了從團(tuán)隊(duì)構(gòu)建、產(chǎn)品策劃、開發(fā)測試到部署上線的全過程?!窩ODING 持續(xù)集成」集成了 Jenkins 等主流企業(yè)開發(fā)流程工具。
CODING 面向 5 人(含 5 人)以下團(tuán)隊(duì)提供免費(fèi)試用,團(tuán)隊(duì)可以享有所有功能,并且不限項(xiàng)目和倉庫數(shù)量,開箱即用,無需部署,而且他家還實(shí)行靈活的按人天扣費(fèi),也就是每人每天 1 元錢,涵蓋 DevOps 全部所需,比如你的團(tuán)隊(duì)有 10 個(gè)人,那么每天的費(fèi)用也僅為 10 元,如果是按年計(jì)費(fèi)則是 3650 元,非常簡單對(duì)不對(duì)。另外 CODING 還為企業(yè)提供私有化方案,你可以將 CODING 部署在公司自己的服務(wù)器上,在保障公司隱私的同時(shí)享受更多的定制化服務(wù)。