CI 持續(xù)集成
CD 持續(xù)交付
CI/CD就是在開發(fā)階段,通過自動(dòng)化發(fā)布,來頻繁部署應(yīng)用的一種方式
想象一下,一個(gè)項(xiàng)目的發(fā)布如果手動(dòng)部署,需要的操作有:
單元測(cè)試
打包文件
上傳服務(wù)器
等等
如果每個(gè)過程都需要手動(dòng)執(zhí)行,每次都要保證不出錯(cuò),這個(gè)已經(jīng)很繁瑣了。
而現(xiàn)在大的前端項(xiàng)目多達(dá)10+的人開發(fā),而且人員流動(dòng)大。
如果每個(gè)人都這么發(fā)布,快速迭代就容易出錯(cuò)。
這時(shí)候就需要CI/CD了,
CI/CD提供了自動(dòng)化部署、代碼質(zhì)量檢查、版本管理、快速回退等的能力
前端項(xiàng)目:用來部署前端業(yè)務(wù)的代碼
Gitlab: 8.0.0版本以上支持CI/CD
Gitlab runner:
理解為一個(gè)應(yīng)用,可以通過Api和Gitlab交互,需要提前部署。
.gitlab-ci.yml配置的一個(gè)個(gè)CI/CD任務(wù),需要Runner執(zhí)行,然后將結(jié)果反饋Gitlab實(shí)例。
這些任務(wù)可以配置,比如構(gòu)建鏡像,代碼檢測(cè),部署發(fā)布...等等。
Docker倉(cāng)庫(kù):用來保存構(gòu)建的鏡像版本,方便隨時(shí)回退
K8S集群:用來部署項(xiàng)目,多集群部署可以容災(zāi)
配置Gitlab的CI/CD發(fā)布,要了解這個(gè)發(fā)布過程
項(xiàng)目中需要配置
.gitlab-ci.yml
Dockerfile
gitlab runner
production.yml
開發(fā)完畢后,提交代碼到master,并推送遠(yuǎn)程倉(cāng)庫(kù),執(zhí)行下面語句,將觸發(fā)CICD
git tag v1.0.0 && git push origin v1.0.0 復(fù)制代碼
注意,觸發(fā)CI/CD有多種方式,包括:git tag
,合并分支,調(diào)用Api,或者Gitlab頁面操作,需要配置.gitlab-ci.yml文件
如圖所示,Gitlab將會(huì)啟動(dòng)一個(gè)pipeline,這個(gè)pipeline包括了.gitlab-ci.yml
文件定義的一系列任務(wù),包括自定義的并行和串行任務(wù)。
具體執(zhí)行任務(wù)是在Gitlab Runner中,Runner要提前配置好。 如下圖i6PHy8wy
就是一個(gè)共享的runner:
CI/CD的過程中可以構(gòu)建一個(gè)用來部署的docker鏡像,然后根據(jù)[product].yml(k8s)的配置文件,部署k8s。
我們可以看到,整個(gè)過程中,我們僅僅執(zhí)行命令git tag
,然后后面的一些任務(wù),如靜態(tài)檢查,單元測(cè)試,打包,部署都不需要操心,直到完成,完成也可以配置郵件或微信提醒,有問題可以回退版本。這樣就避免了人為的操作失誤。
由上面的流程,我們可以看到在觸發(fā)CI/CD后,必須要有一個(gè)可以執(zhí)行pipeline的runner,所以就先來部署gitlab runner。
Runners are processes that pick up and execute CI/CD jobs for GitLab
意思就是runner
是一個(gè)可以跑CI/CD任務(wù)的一系列進(jìn)程。
gitlab-runner是一個(gè)執(zhí)行Gitlab CI/CD的應(yīng)用,先注冊(cè)
gitlab-runner
,然后配置的.gitlab-ci.yml的任務(wù)和指令就可以成功執(zhí)行,然后再通過api將結(jié)果反饋Gitlab。
共享runner 可以讓當(dāng)前gitlab倉(cāng)庫(kù)的所有項(xiàng)目共用
組runner 可以讓組中的項(xiàng)目共用,在組cicd中注冊(cè)
項(xiàng)目runner 僅可以在當(dāng)前項(xiàng)目使用,在當(dāng)前項(xiàng)目下配置
這三類runner的安裝一樣,支持安裝在本地,虛擬機(jī),云服務(wù)器,docker,k8s等。官方安裝說明
這里我們選擇安裝到一臺(tái)linux云服務(wù)器,文檔
(1)根據(jù)不同的服務(wù)器版本,下載對(duì)應(yīng)的gitlab-runner
# Linux x86-64 sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64" # Linux x86 sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386" # Linux arm sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm" # Linux arm64 sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm64" # Linux s390x sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-s390x" 復(fù)制代碼
(2) 給gitlab-runner權(quán)限
sudo chmod +x /usr/local/bin/gitlab-runner 復(fù)制代碼
(3) 創(chuàng)建一個(gè)gitlab-ci的用戶,之后在CICD都會(huì)在這個(gè)用戶下進(jìn)行
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash 復(fù)制代碼
(4) 安裝并且啟動(dòng)gitlab-runner
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner sudo gitlab-runner start 復(fù)制代碼
(1)執(zhí)行g(shù)itlab-runner命令
sudo gitlab-runner register 復(fù)制代碼
然后根據(jù)提示,依次輸入下圖中1、2的url和token,還有一個(gè)tag,是用來和.gitlab-ci.yml聯(lián)動(dòng)的,可以自行定義,像下圖的test。
注冊(cè)需要在setting/cicd頁面,打開runner模塊,拿到圖中的urlh和token
項(xiàng)目的runner就到項(xiàng)目下的setting/cicd,
組的runner就到組的setting/cicd
共享的runner就去管理員權(quán)限下拿
這里安裝了項(xiàng)目的runner,安裝好后就可以看到如圖中3所示的runner
到這里,就安裝好了,然后接著配置
.gitlab-ci.yml
文件,讓CICD跑起來。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/127953.html
摘要:內(nèi)部長(zhǎng)期使用來管理代碼。審核通過并且成功后,觸發(fā)靜態(tài)測(cè)試單元測(cè)試鏡像構(gòu)建鏡像部署集成測(cè)試等測(cè)試通過后,創(chuàng)建一個(gè)從到的,由負(fù)責(zé)人進(jìn)行審核。從圖中我們可以看到,部分是一個(gè)單元測(cè)試,預(yù)發(fā)布部署,集成測(cè)試,,提交代碼的循環(huán)過程。UCloud內(nèi)部長(zhǎng)期使用 Gitlab 來管理代碼。雖然Gitlab作為一套開源平臺(tái)已很優(yōu)秀,但我們對(duì)于其能為CI/CD提供的敏捷性并不十分滿意,內(nèi)部實(shí)踐中的代碼發(fā)布周期仍需...
摘要:近期在按照業(yè)務(wù)劃分項(xiàng)目時(shí),我們組被分了好多的項(xiàng)目過來,大量的是基于的,也是我們組持續(xù)在使用的語言。部署環(huán)境強(qiáng)依賴本地,因?yàn)樾枰诒镜亟}(cāng)庫(kù)的臨時(shí)目錄,并經(jīng)過多次的方式完成部署上線的操作。 近期在按照業(yè)務(wù)劃分項(xiàng)目時(shí),我們組被分了好多的項(xiàng)目過來,大量的是基于 Node.js 的,也是我們組持續(xù)在使用的語言。 現(xiàn)有流程中的一些問題 在維護(hù)多個(gè)項(xiàng)目的時(shí)候,會(huì)暴露出一些問題: 如何有效的使用...
摘要:來自硅谷的企業(yè)級(jí)容器管理平臺(tái)提供商今日正式發(fā)布與企業(yè)級(jí)容器管理平臺(tái)集成的,極簡(jiǎn)的操作體驗(yàn),強(qiáng)大的功能整合,完全開源,助力在企業(yè)的真正落地使用。 來自硅谷的企業(yè)級(jí)容器管理平臺(tái)提供商Rancher Labs今日正式發(fā)布與Rancher企業(yè)級(jí)容器管理平臺(tái)集成的Rancher Pipeline,極簡(jiǎn)的操作體驗(yàn),強(qiáng)大的功能整合,完全開源,助力CI/CD在企業(yè)的真正落地使用。 云計(jì)算技術(shù)的廣泛采用...
摘要:從開始,部署管理的集群時(shí),默認(rèn)情況下會(huì)啟用授權(quán)群集端點(diǎn)功能。我們將首先在中創(chuàng)建一個(gè)新項(xiàng)目,該項(xiàng)目將使用功能與我們的集群集成。完成后單擊創(chuàng)建項(xiàng)目。這不僅意味著已被設(shè)為默認(rèn)值,還能夠觸發(fā)構(gòu)建。例如,負(fù)載均衡選項(xiàng)卡顯示已部署的以及創(chuàng)建的主機(jī)名。 介 紹 在這篇文章中,我們將介紹如何將GitLab的Auto DevOps功能與Rancher管理的Kubernetes集群連接起來,利用Ranch...
摘要:使用的公司能大大增加他們的應(yīng)用程序發(fā)行頻率。然而,這是戰(zhàn)略需求,將會(huì)提高交付速度,減少錯(cuò)誤。我們的建議是,最好進(jìn)入流程定義,以實(shí)現(xiàn)零接觸持續(xù)部署的總體目標(biāo)。 在最好的時(shí)候創(chuàng)建用戶喜歡的高質(zhì)量應(yīng)用程序并不是件容易的事情。更何況,要怎樣做才能更快地創(chuàng)建用戶喜歡的高質(zhì)量應(yīng)用程序并且能夠不斷改進(jìn)它們呢?這就是需要引入持續(xù)集成和持續(xù)交付(CI / CD)的地方。 持續(xù)集成(CI) 什么是持續(xù)集成...
閱讀 836·2025-02-07 13:29
閱讀 644·2024-11-07 18:25
閱讀 131094·2024-02-01 10:43
閱讀 1060·2024-01-31 14:58
閱讀 1022·2024-01-31 14:54
閱讀 83215·2024-01-29 17:11
閱讀 3497·2024-01-25 14:55
閱讀 2217·2023-06-02 13:36