豬八戒網(wǎng) CI/CD 最佳實(shí)踐之路


Nodejs:負(fù)責(zé)前端
Java:負(fù)責(zé)后端
PHP:負(fù)責(zé)老項(xiàng)目維護(hù)




公交車模式(本圖由DevOps團(tuán)隊(duì)提供)
項(xiàng)目耦合度太高,容易導(dǎo)致合并沖突,環(huán)境沖突等。
集成過(guò)程中未對(duì)代碼進(jìn)行審查,錯(cuò)誤代碼發(fā)布到測(cè)試環(huán)境后,會(huì)影響依賴方的測(cè)試。
發(fā)布受限制,必須在專門(mén)時(shí)間由專人發(fā)布。
發(fā)布異常時(shí),回滾工作異常艱難。







通過(guò)用Jira需求上線流程和流水線做整合,以及多種推送前的校驗(yàn),保證了上線過(guò)程的每一步都是可靠的
每一個(gè)環(huán)境的集成和發(fā)布都是自動(dòng)化的
因?yàn)檫^(guò)程變得可靠且自動(dòng)化,使得將發(fā)布過(guò)程開(kāi)放給研發(fā)團(tuán)隊(duì)成為了可能,達(dá)到了隨時(shí)自主上線的目的。
不夠靈活,如在推送測(cè)試環(huán)境時(shí),整個(gè)過(guò)程執(zhí)行的步驟是固定的的,即第一步做什么,第二步做什么都是固定的,不能新增也不能刪減,如某些團(tuán)隊(duì)需要進(jìn)行單元測(cè)試,有的不需要,但流水線都會(huì)去執(zhí)行單元測(cè)試,通常情況下單元測(cè)試過(guò)程是一個(gè)花費(fèi)時(shí)間比較長(zhǎng)的過(guò)程,這對(duì)于需要頻繁更改和部署的業(yè)務(wù)是不友好的。
推送成功率不高,因?yàn)檎麄€(gè)過(guò)程是串聯(lián)的,某一個(gè)環(huán)節(jié)出現(xiàn)錯(cuò)誤,將會(huì)導(dǎo)致本次推送失敗,而某些環(huán)節(jié)本不應(yīng)該影響構(gòu)建結(jié)果的,最后導(dǎo)致了構(gòu)建失敗。














CI/CD應(yīng)該是以提高研發(fā)效率為目標(biāo)的實(shí)踐,一切脫離這個(gè)目標(biāo)只是為了迎合什么口號(hào)而做什么的是都是耍牛氓。而實(shí)現(xiàn)這個(gè)目標(biāo)是一個(gè)比較漫長(zhǎng)的過(guò)程,一開(kāi)始會(huì)比較容易,后面就會(huì)越來(lái)越難,這需要不斷思考和學(xué)習(xí)的過(guò)程。
CI/CD應(yīng)該是緊貼業(yè)務(wù)的,因?yàn)闃I(yè)務(wù)的不同,要求的技術(shù)架構(gòu)也會(huì)有所不同,隨之而來(lái),要求的交付方式也會(huì)有所不同。
CI/CD應(yīng)該是以人為本的,我們應(yīng)該盡可能地將一切繁瑣的過(guò)程交給程序去執(zhí)行,而人只需要“坐享其成”或者做少量的決策即可。
- END -
推薦閱讀 Kubernetes 企業(yè)容器云平臺(tái)運(yùn)維實(shí)戰(zhàn) Jenkins Pipeline 流水線部署 Kubernetes 應(yīng)用 快、狠、準(zhǔn)!系統(tǒng)有效的排查運(yùn)維類故障 OpenStack 與 Kubernetes 的共存 Nginx 常用配置清單 最強(qiáng)整理!常用正則表達(dá)式速查手冊(cè) 運(yùn)維的工作邊界,這次真的搞明白了! 七年老運(yùn)維實(shí)戰(zhàn)中的 Shell 開(kāi)發(fā)經(jīng)驗(yàn)總結(jié) 面試數(shù)十家Linux運(yùn)維工程師,總結(jié)了這些面試題(含答案) 快速入門(mén) Ansible 自動(dòng)化運(yùn)維工具 | 16張圖 12年資深運(yùn)維老司機(jī)的成長(zhǎng)感悟
點(diǎn)亮,服務(wù)器三年不宕機(jī)


