go-zero CI/CD

2022-04-21 11:11 更新

在軟件工程中,CI/CD或CICD通常指的是持續(xù)集成和持續(xù)交付或持續(xù)部署的組合實(shí)踐。 ——引自維基百科


CI可以做什么?

  • 現(xiàn)代應(yīng)用開發(fā)的目標(biāo)是讓多位開發(fā)人員同時(shí)處理同一應(yīng)用的不同功能。但是,如果企業(yè)安排在一天內(nèi)將所有分支源代碼合并在一起(稱為“合并日”),最終可能造成工作繁瑣、耗時(shí),而且需要手動(dòng)完成。這是因?yàn)楫?dāng)一位獨(dú)立工作的開發(fā)人員對(duì)應(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ā)人員對(duì)應(yīng)用所做的更改被合并,系統(tǒng)就會(huì)通過自動(dòng)構(gòu)建應(yīng)用并運(yùn)行不同級(jí)別的自動(dòng)化測(cè)試(通常是單元測(cè)試和集成測(cè)試)來驗(yàn)證這些更改,確保這些更改沒有對(duì)應(yīng)用造成破壞。這意味著測(cè)試內(nèi)容涵蓋了從類和函數(shù)到構(gòu)成整個(gè)應(yīng)用的不同模塊。如果自動(dòng)化測(cè)試發(fā)現(xiàn)新代碼和現(xiàn)有代碼之間存在沖突,CI 可以更加輕松地快速修復(fù)這些錯(cuò)誤。
——引自《CI/CD是什么?如何理解持續(xù)集成、持續(xù)交付和持續(xù)部署》

從概念上來看,CI/CD包含部署過程,我們這里將部署(CD)單獨(dú)放在一節(jié)服務(wù)部署, 本節(jié)就以gitlab來做簡單的CI(Run Unit Test)演示。

gitlab CI

Gitlab CI/CD是Gitlab內(nèi)置的軟件開發(fā)工具,提供

  • 持續(xù)集成(CI)
  • 持續(xù)交付(CD)
  • 持續(xù)部署(CD)

準(zhǔn)備工作

  • gitlab安裝
  • git安裝
  • gitlab runner安裝

開啟gitlab CI

  • 上傳代碼
    • 在gitlab新建一個(gè)倉庫go-zero-demo
    • 將本地代碼上傳到go-zero-demo倉庫
  • 在項(xiàng)目根目錄下創(chuàng)建.gitlab-ci.yaml文件,通過此文件可以創(chuàng)建一個(gè)pipeline,其會(huì)在代碼倉庫中有內(nèi)容變更時(shí)運(yùn)行,pipeline由一個(gè)或多個(gè)按照順序運(yùn)行, 每個(gè)階段可以包含一個(gè)或者多個(gè)并行運(yùn)行的job。
  • 添加CI內(nèi)容(僅供參考)

  stages:
  - analysis

  analysis:
  stage: analysis
  image: golang
  script:
  - go version && go env
  - go test -short $(go list ./...) | grep -v "no test"


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)