在軟件工程中,CI/CD或CICD通常指的是持續(xù)集成和持續(xù)交付或持續(xù)部署的組合實(shí)踐。 ——引自維基百科
——引自《CI/CD是什么?如何理解持續(xù)集成、持續(xù)交付和持續(xù)部署》
- 現(xiàn)代應(yīng)用開發(fā)的目標(biāo)是讓多位開發(fā)人員同時(shí)處理同一應(yīng)用的不同功能。但是,如果企業(yè)安排在一天內(nèi)將所有分支源代碼合并在一起(稱為“合并日”),最終可能造成工作繁瑣、耗時(shí),而且需要手動(dòng)完成。這是因?yàn)楫?dāng)一位獨(dú)立工作的開發(fā)人員對應(yīng)用進(jìn)行更改時(shí),有可能會(huì)與其他開發(fā)人員同時(shí)進(jìn)行的更改發(fā)生沖突。如果每個(gè)開發(fā)人員都自定義自己的本地集成開發(fā)環(huán)境(IDE),而不是讓團(tuán)隊(duì)就一個(gè)基于云的 IDE 達(dá)成一致,那么就會(huì)讓問題更加雪上加霜。
- 持續(xù)集成(CI)可以幫助開發(fā)人員更加頻繁地(有時(shí)甚至每天)將代碼更改合并到共享分支或“主干”中。一旦開發(fā)人員對應(yīng)用所做的更改被合并,系統(tǒng)就會(huì)通過自動(dòng)構(gòu)建應(yīng)用并運(yùn)行不同級(jí)別的自動(dòng)化測試(通常是單元測試和集成測試)來驗(yàn)證這些更改,確保這些更改沒有對應(yīng)用造成破壞。這意味著測試內(nèi)容涵蓋了從類和函數(shù)到構(gòu)成整個(gè)應(yīng)用的不同模塊。如果自動(dòng)化測試發(fā)現(xiàn)新代碼和現(xiàn)有代碼之間存在沖突,CI 可以更加輕松地快速修復(fù)這些錯(cuò)誤。
從概念上來看,CI/CD包含部署過程,我們這里將部署(CD)單獨(dú)放在一節(jié)服務(wù)部署, 本節(jié)就以gitlab來做簡單的CI(Run Unit Test)演示。
Gitlab CI/CD是Gitlab內(nèi)置的軟件開發(fā)工具,提供
stages:
- analysis
analysis:
stage: analysis
image: golang
script:
- go version && go env
- go test -short $(go list ./...) | grep -v "no test"
更多建議: