GitlabCI/CD入門(mén)
構(gòu)建在AWSS3.靜態(tài)網(wǎng)站的管道布置在存儲(chǔ)桶上
他們都接受各種各樣的東西DevOps實(shí)踐。給我留下深刻印象的一件事是,我們的代碼質(zhì)量、開(kāi)發(fā)速度和團(tuán)隊(duì)的整體幸福感如何以及我們CI/CD管道相關(guān)。
我認(rèn)為您的團(tuán)隊(duì)管道的成熟度可以很好地代表團(tuán)隊(duì)自身的開(kāi)發(fā)人員感受和效率代碼質(zhì)量。
在許多情況下,管道是由的DevOps工程師或特殊的DevOps團(tuán)隊(duì)建設(shè)和維護(hù)。StateofCD根據(jù)2022年的報(bào)告,只有22%的開(kāi)發(fā)人員建造了它CI/CD管路。
我的目標(biāo)是讓你有自己的管道來(lái)幫助增加這個(gè)數(shù)字,這樣你就可以有一個(gè)順利的交付過(guò)程,保持聯(lián)系,并向世界推出一個(gè)偉大的代碼。
本文將介紹CI和CD請(qǐng)?zhí)D(zhuǎn)到任何引起你興趣的部分。
CI/CD到底是什么?
管道的CI和CD階段
CI/CD管道的階段
使用AWSS3的GitlabCI/CD示例
CI/CD到底是什么?
許多企業(yè)選擇敏捷的框架,因?yàn)樗顾麄兡軌蛟俅未_定優(yōu)先級(jí),提高交付率,提高團(tuán)隊(duì)士氣和投資回報(bào)率。
如果你的公司使用敏捷,從選擇幾乎是不可避免的DevOps受益于文化、思想和實(shí)踐。
DevOps在過(guò)去的幾十年里,流行語(yǔ)已經(jīng)成為一種必要的實(shí)踐,并被視為行業(yè)標(biāo)準(zhǔn)。CI/CD是一種DevOps該策略可以幫助軟件開(kāi)發(fā)團(tuán)隊(duì)頻繁可靠地更改代碼。
“快速構(gòu)建,快速測(cè)試,快速失敗?!?/p>
以自動(dòng)化測(cè)試為戰(zhàn)略核心,鼓勵(lì)團(tuán)隊(duì)頻繁可靠地自動(dòng)化任務(wù)和交付代碼。
一旦建立了CI/CD管道,這將帶來(lái)幾個(gè)好處。公司受益于成本低、生產(chǎn)力高、上市時(shí)間快、適應(yīng)不斷變化的需要。
團(tuán)隊(duì)受益于快速反饋、更好的發(fā)展感受、更少的瓶頸、更高的員工奉獻(xiàn)精神和工作滿(mǎn)意度。
管道的CI和CD階段
持續(xù)集成——CI
持續(xù)集成旨在頻繁地將代碼變更提交并合并到代碼庫(kù)的主干中,一般每天幾次。
它得益于承認(rèn)人類(lèi)認(rèn)知能力有限,從而鼓勵(lì)開(kāi)發(fā)人員建立更容易審查的小變化,涵蓋自動(dòng)化測(cè)試和頻繁發(fā)布。
這避免了發(fā)布準(zhǔn)備日等事情。這些事情一般壓力很大,充滿(mǎn)了棘手的合并矛盾和大量的手動(dòng)測(cè)試,會(huì)破壞運(yùn)輸過(guò)程,對(duì)每個(gè)參與這個(gè)過(guò)程的人來(lái)說(shuō)都不是一種好感覺(jué)。
持續(xù)交付——CD
這是CI下一步。目標(biāo)是確保代碼庫(kù)始終處于可布局狀態(tài),并且可以通過(guò)點(diǎn)擊按鈕進(jìn)行布局。
這里的關(guān)鍵是自動(dòng)化,無(wú)論是大規(guī)模分布式結(jié)構(gòu)還是復(fù)雜的生產(chǎn)環(huán)境。
持續(xù)部署——CD
完善的CI/CD在生產(chǎn)環(huán)境中,管道的最后和最后階段都是自動(dòng)布置的,不需要人工控制。
當(dāng)然,這并不容易,需要仔細(xì)考慮自動(dòng)化測(cè)試。CD的狀態(tài)說(shuō)明
“47%的開(kāi)發(fā)人員使用連續(xù)集成或部署,但只有五分之一的開(kāi)發(fā)人員使用連續(xù)集成和部署方法自動(dòng)化所有代碼構(gòu)建、測(cè)試和部署到生產(chǎn)環(huán)境?!?/p>
Accelerate這本書(shū)總結(jié)了多年DevOps多年來(lái),國(guó)家報(bào)告的嚴(yán)格研究是基于來(lái)自世界各地企業(yè)的2.3萬(wàn)個(gè)數(shù)據(jù)。正如你所看到的,高績(jī)效的人可以按需分配/每天分配幾次
CI/CD管道的階段
源階段
這種情況經(jīng)常發(fā)生在源階段Git倉(cāng)庫(kù)發(fā)生變化后,表現(xiàn)為打開(kāi)新的獲取請(qǐng)求或推送到分支。
另一種方法是配備你CI/CD通過(guò)自動(dòng)計(jì)劃或在另一條管道運(yùn)行后觸發(fā)您的管道。
搭建階段
構(gòu)建階段是您檢查代碼并構(gòu)建它的地方。docker因?yàn)樗鼛?lái)了一致的環(huán)境,所以這種工具大放異彩。
測(cè)試階段
如前所述,沒(méi)有自動(dòng)化測(cè)試CI/CD。畢竟,我們希望確保我們更改的代碼不會(huì)破壞生產(chǎn)。
布署階段
在最后階段,在成功通過(guò)前一階段后,您現(xiàn)在可以在您選擇的環(huán)境中部署代碼。
Gitlab示例
在這個(gè)例子中,我將使用它GitlabCI/CD,但是其它工具的概念是相似的,所以你也可以將其應(yīng)用于其他存儲(chǔ)和托管服務(wù)。
有幾種CI/CD工具,如著名的行業(yè)領(lǐng)導(dǎo)者Jenkins,它需要一些設(shè)置和配備工作,而其他工具需要提前配備由GitHubActions和BitbucketPipelines提供存儲(chǔ)倉(cāng)托管服務(wù)等提供存儲(chǔ)倉(cāng)托管服務(wù)
這就是為什么如果你的代碼托管在那里Gitlab上,然后用GitLabCI/CD因?yàn)榇a和CI/CD在同一個(gè)平臺(tái)上管理。
你可能會(huì)問(wèn),如果不需要配備,它是如何工作的?
要理解這一點(diǎn),我們應(yīng)該稍微探索一下Gitlab特別是GitlabInstances和GitlabRunners。
Gitlab案例是管理您的應(yīng)用程序編程代碼和管道的機(jī)器。
Gitlabrunners作為管道執(zhí)行代理的獨(dú)立機(jī)器。
每個(gè)GitLab案例可以連接到一個(gè)或多個(gè)操作器。
Gitlab.com托管GitLab案例,并提供多個(gè)原因Gitlab自己維修的Runners,所以如果你用的話Gitlab.com,可以開(kāi)箱即用。
入門(mén)
Gitlab在新項(xiàng)目中有幾個(gè)模板。GitLabCI/CD管道配備默認(rèn)位置.gitlab-ci.yml在根目錄。
假設(shè)我們想建立一個(gè)簡(jiǎn)單的管道,以確保代碼已經(jīng)建立、測(cè)試和部署。但首先,您應(yīng)該熟悉以下概念和術(shù)語(yǔ)。
流水線
流水線是多期作業(yè)的集合。Gitlab提供基本流水線、合并流水線、父子流水線、多項(xiàng)目流水線等不同類(lèi)型的流水線
階段:
階段是管道的一個(gè)步驟,它提供相關(guān)操作的信息。一個(gè)階段可以包含一個(gè)或多個(gè)工作。流行示例:施工、測(cè)試和部署。
工作
管道的構(gòu)造是執(zhí)行操作,如lint,編譯、測(cè)試和部署。每項(xiàng)工作都應(yīng)該定義一個(gè)name和,一旦所有的作業(yè)都在一個(gè)階段完成,管道就會(huì)進(jìn)入下一階段。script
現(xiàn)在-標(biāo)準(zhǔn)
構(gòu)建,檢測(cè)靜態(tài)網(wǎng)站并將其部署到AWSS3存儲(chǔ)桶的GitlabCICD管路示例。
創(chuàng)建一個(gè)新.gitlab-ci.yml讓我們開(kāi)始吧。
定義變量
variables: # 變量定義,便于重量值。
CI_NODE_IMAGE: “節(jié)點(diǎn):16.13.2”
2.定義階段
# 流水線階段
stages:
- install
- build
- test
- deploy
3.定義每個(gè)階段的工作階段
#install 作業(yè)定義
install:
stage: install
image: "$CI_NODE_IMAGE" # variable reference
script: # runner 執(zhí)行的 Shell 腳本。
- npm ci
cache: # 文件列表需要在后續(xù)操作之間緩存。
key:
files:
- package.json
- package-lock.json
paths: # 緩存目錄
- node_modules
# Build Job definition
build:
stage: build
image: $CI_NODE_IMAGE
script:
- npm run build
artifacts: #附加到
作業(yè)
的 文件和目錄列表_ _ _ _ _ _ _ _ _ _ _ _ : $CI_NODE_IMAGE script: - npm run test # Deploy Job definition deploy: stage: deploy image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest # GitLab 提供的包含 AWS CLI 的 Docker腳本:
- aws s3 cp --recursive dist s3://bucket-name # 將 dist 文件夾復(fù)制到 aws s3 存儲(chǔ)桶
感謝閱讀
聲明本文內(nèi)容來(lái)自網(wǎng)絡(luò),若涉及侵權(quán),請(qǐng)聯(lián)系我們刪除! 投稿需知:請(qǐng)以word形式發(fā)送至郵箱[email protected]
這個(gè)思路是英文的。對(duì)于中文的恐怕不可能這樣