最近在網(wǎng)上看了不少有關(guān)CI/CD的文章,其實(shí)基本是雷同的,且內(nèi)容也不是非常完善。確實(shí),當(dāng)前持續(xù)集成用到的開(kāi)源工具無(wú)非還是Git、Jenkins、Ansible(Fabric)這些,不同的應(yīng)該是各公司的技術(shù)框架差異,發(fā)布審核流程不同,從而使配置細(xì)節(jié)也有較大不同。接下來(lái)我要分享的一系列文章均是圍繞生產(chǎn)版本發(fā)布、集群中間件搭建以及監(jiān)控來(lái)寫(xiě),并且都是這些年(2014-至今)我們一直還在用的技術(shù)(包括具體環(huán)境搭建以及前后端發(fā)布等細(xì)節(jié)),歡迎拍磚,共同探討。
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),先為郯城等服務(wù)建站,郯城等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為郯城企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
我們一直沿用的一套流程如下:
0、在公司內(nèi)部搭建gitlab服務(wù)器,員工自行在公司gitlab服務(wù)器通過(guò)公司郵箱完成賬號(hào)注冊(cè)。
1、配置管理員在gitlab上創(chuàng)建project(項(xiàng)目或倉(cāng)庫(kù)),建議按業(yè)務(wù)線或功能先分group(組),然后再在group下創(chuàng)建具體的project,避免所有project混在一個(gè)group。
2、源碼放在源碼project;編譯后可用于發(fā)布包放在可發(fā)布的project。
3、配置管理員對(duì)已注冊(cè)開(kāi)發(fā)人員分配權(quán)限(master、develop、Reporter等),權(quán)限可在group上分配,也可細(xì)到某個(gè)project。
4、開(kāi)發(fā)人員通常只分配develop權(quán)限且在develop分支進(jìn)行開(kāi)發(fā),開(kāi)發(fā)人員不允許直接提交代碼到master(主分支),如需提交到master,則需要發(fā)出合并請(qǐng)求,由項(xiàng)目管理者review后決定是否合并。
5、源代碼合并后,由合并者打tag觸發(fā)jenkins構(gòu)建出用于發(fā)布的版本包,并推送到對(duì)應(yīng)發(fā)布代碼的project中,同步tag,同時(shí)根據(jù)最新tag發(fā)布到測(cè)試環(huán)境。
6、在經(jīng)過(guò)代碼審查、集成測(cè)試、功能測(cè)試以及安全性測(cè)試等都通過(guò)后,且經(jīng)產(chǎn)品人員確認(rèn)同意發(fā)布,再使用jenkins將測(cè)試通過(guò)的tag發(fā)布到RC環(huán)境。
7、RC運(yùn)行正常,產(chǎn)品人員確認(rèn)同意發(fā)布到生產(chǎn),再使用jenkins將RC通過(guò)的tag(測(cè)試和RC的tag均是同一個(gè))發(fā)布到生產(chǎn)環(huán)境。
8、如果發(fā)布后出現(xiàn)異常,則使用jenkins按上一次正常tag進(jìn)行回滾。
上述是一個(gè)較理想的流程,但實(shí)際開(kāi)發(fā)過(guò)程中,一名開(kāi)發(fā)人員可能身兼多職,包括編碼、測(cè)試等,所以可能更通用的流程如下圖1描述所示。
圖1
同樣,一般中小規(guī)模公司,一般只有一到兩名運(yùn)維人員,那么在維護(hù)上述發(fā)布框架同時(shí),該名運(yùn)維人員常備的技能如下:
0、與開(kāi)發(fā)、測(cè)試、產(chǎn)品同學(xué)之間的和諧溝通及協(xié)調(diào)能力。
1、Gitalb搭建以及配置管理功能,包括備份恢復(fù)、郵件通知、權(quán)限分配、通過(guò)API創(chuàng)建project、Webhooks、tag(標(biāo)簽)規(guī)范化并實(shí)現(xiàn)自動(dòng)生成tag等常用維護(hù)操作。
2、Jenkins環(huán)境搭建以及配置管理功能。包括插件安裝、權(quán)限分配、郵件通知、腳本創(chuàng)建job、參數(shù)化構(gòu)建等。
3、腳本編寫(xiě)能力,包括Shell、Fabric或借助Ansible完成代碼編譯、推送、發(fā)布(回滾也是發(fā)布)等。
4、日志集中收集,如配置syslog-ng和ELK,個(gè)人更傾向于用syslog-ng完成集中收集,然后用ELK來(lái)展示,因?yàn)樵诎l(fā)布過(guò)程中開(kāi)發(fā)人員更習(xí)慣使用tailf來(lái)查看發(fā)布過(guò)程中是否報(bào)錯(cuò)以便及時(shí)回滾。
5、監(jiān)控,推薦使用Zabbix+Grafana,也可使用Nagios。實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)設(shè)備監(jiān)控(CPU、內(nèi)存、溫度、接口流量等)、服務(wù)器硬件監(jiān)控(通過(guò)IPMI接口獲取硬件故障信息)、系統(tǒng)監(jiān)控(內(nèi)存、CPU、磁盤(pán)空間和IO、負(fù)載、網(wǎng)卡流量、文件句柄等)、集群中間件監(jiān)控(集群狀態(tài)、CPU、內(nèi)存使用、日志等)服務(wù)監(jiān)控(進(jìn)程、端口、響應(yīng)狀態(tài)碼、日志等)、數(shù)據(jù)庫(kù)監(jiān)控(常用命中率指標(biāo)、表空間、慢查詢、日志等)、業(yè)務(wù)監(jiān)控等,確保業(yè)務(wù)7*24不時(shí)不中斷穩(wěn)定運(yùn)行。
6、集群中間件搭建以及維護(hù)能力,諸如Zookeeper、redis、MongoDB、RabbitMQ、RocketMQ等。
7、數(shù)據(jù)庫(kù)集群搭建以及維護(hù)能力,包括Oracle、MySQL。不過(guò),現(xiàn)在中小規(guī)模公司基本在云上,主要用的是RDS,個(gè)人覺(jué)得阿里云RDS的性能監(jiān)控可視化做得非常棒,遠(yuǎn)超AWS。
總結(jié):干運(yùn)維真得非常不容易,分分鐘就會(huì)當(dāng)背鍋俠,請(qǐng)對(duì)運(yùn)維好一點(diǎn)!
下一篇:Gitlab搭建與配置技巧
網(wǎng)站名稱:持續(xù)集成開(kāi)篇之(一)代碼發(fā)布流程
網(wǎng)頁(yè)鏈接:http://jinyejixie.com/article18/pggcdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、企業(yè)網(wǎng)站制作、網(wǎng)站內(nèi)鏈、網(wǎng)站營(yíng)銷、、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容