轉載本文需註明出處:微信公眾號EAWorld,違者必究。
//
DevOps(開發:Development和運維:Operations的組合詞)是一組過程、方法與系統的統稱,用於促進開發(應用程式/軟體工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。
——by 百度百科
//
今天的主題就是有關DevOps的很重要的一部分,Development中代碼模塊的設計。
代碼模塊說複雜也不複雜說簡單也不簡單,複雜是說它上承接著任務模塊,下關聯著構建模塊,功能涉及到代碼的對比合併、質量分析、關聯的任務項等,缺了它就湊不成完整的DevOps流程。
簡單是說該模塊需要關注的點無非就是質量以及效率,一個項目在我看來代碼才是根本,代碼的產出質量效率越高,就越是節省項目的成本,有錢賺才是硬道理。
代碼模塊的受眾也無非兩類人:開發人員和上層領導。
開發人員眼中的代碼模塊是branch、tag、code、merge-request、quality等等諸多功能模塊的混合體。
不行了,暈了
但是到了領導的眼裡,報表即可解決問題:
一類報表說了張三今天代碼產出了多少的缺陷多少的漏洞。
垃圾代碼冠軍得主,就是你
另一類報表說了李四本周就敲了10行代碼效率極其低下。
是時候該炒李四魷魚了
所以創造一個友好的代碼管理功能交互頁面以及簡潔明了的代碼質量效率報表界面成了代碼模塊設計的關鍵之處。
接下來,我就拿自己正在參與的DevOps項目來做一下代碼模塊設計的講解。
先說說供給開發人員使用的代碼模塊:
一個正常運轉的項目,一定繞不開的就是源碼的管理,但代碼管理工具種類繁雜,諸如Github、Gitlab、SVN等
也許A公司用著Gitlab,B公司用著SVN,自己的產品若只支持Gitlab代碼庫,那豈不是白白損失了B公司這個潛在客戶?
銷售磨刀霍霍向產品
所以,正確的思路就該是:我全都要!
要想實現全都要也很簡單,無非就是配置文件加類加載器,通過判斷接口傳入的代碼庫類型來加載不同的第三方代碼庫服務集成類,這樣就可以輕鬆實現你若有需要,我便可集成。
此處不再細述第三方的代碼庫集成方式,像Gitlab、Bitbucket等代碼庫管理工具都有非常完善的rest api接口文檔,開發人員可以參照文檔挑選接口去定向開發需要集成的功能。
Github Rest API官方文檔:
https://docs.github.com/en/rest/reference
Gitlab Rest API官方文檔:
https://docs.gitlab.com/ee/api/api_resources.html
Bitbucket Rest API官方文檔:
https://developer.atlassian.com/server/bitbucket/reference/rest-api/
註:EnforcedServiceLoader為參照jdk的ServiceLoader,增強型的ServiceLoader 。
此方式同樣適用於其他需要集成的服務,如任務模塊(Jira、Zentao等)、文檔模塊(Confluence、Gitbook等)。
目前,普元DevOps平臺已支持的代碼庫有Gitlab、Github、SVN、Bitbucket,未來會有更多的適配代碼庫類型!
下圖是將第三方代碼庫關聯至DevOps項目中去需要配置的表單界面
集成好了代碼庫服務,再說一下實際集成的功能,代碼庫文件的瀏覽、commit歷史的瀏覽、分支標籤的維護對比以及分支合併、代碼質量分析等功能已足夠開發人員使用,不清楚後續是否會考慮做雲ide的集成,這又是另話了 。
產品經理:偽
需要注意的是,通過配置代碼庫的webhook可以實現代碼提交記錄自動關聯任務項。
也可以實現代碼提交自動觸發構建任務(需要在指定的構建定義處配置好代碼觸發構建策略)。
以上與webhook相關的功能就涉及到webhook回調接口的實現了,簡單來說,就是寫一個供給第三方代碼伺服器調用DevOps服務的接口,Gitlab、Github、Bitbucket官方網站有詳細的webhook回調請求的參數格式,通過判斷回調請求的參數來實際調用自己服務的哪些功能就是簡簡單單「小case」的問題了!
小意思?!
下圖是Gitlab的webhook回調功能部分實現:
再來說說為給管理人員帶來便利,DevOps的代碼模塊可以做到哪一步。
就是報表唄
廢話不多說,直接拍圖:
以上三張圖是基於代碼報表數據生成算法以及系統參數配置的計算時間間隔來不間斷計算生成的,看著每天不斷拔高的數據以及開發人員不斷比拼代碼效率,領導露出了欣慰的笑容…
上班第一件事,打開報表,看一眼自己的代碼效率無人能比(不存在的),又是幸福美滿的一天呢!
數據統計時間間隔系統參數配置頁面以及代碼報表數據統計算法部分代碼實現如下圖所示:
最後一張報表展示的是當前項目關聯的代碼庫的代碼質量信息(簡潔版),DevOps平臺只是取了代碼質量掃描報告的關鍵數據做了展示:
要想看複雜版還是要實際的到報告原始界面查看,對了,普元DevOps採用的代碼質量掃描工具是SonarQube(想了解工具請自行baidu),下圖展示了DevOps自身代碼的質量掃描記錄:
別在意今年為啥只有一次質量掃描,因為有專門的質量掃描的構建任務:
自己代碼寫怎麼樣都心裡有點數,領導天天盯著呢!
最後,做一下總結:
這一定一定不是DevOps的最終樣式(鬼知道有沒有最終樣式),就代碼模塊而言,需要做的東西還有很多很多,需求是無限的。
普元DevOps會在不斷的更新過程中,不斷地被完善,終會有一天也會長成參天大樹。
我禿了,也變強了
- end -
(表情素材來源網絡,侵刪)
關於作者:欣宇,普元Java開發工程師,擅長Java、MySQL、Jenkins等;參與DevOps的5.2-5.5版本的研發工作,參與九江銀行的DevOps部署實施,參與碧桂園DevOps定製開發等。