前言
什么是CI/Cd?
CI-Continuous integration
: 持續(xù)集成
是指多名開發(fā)者在開發(fā)不同功能代碼的過程當中,可以頻繁的將代嗎行合并到一起并切相互不影響工作。CD-continuous deployment
:持續(xù)部署
是基于某種工具或平臺實現(xiàn)代碼自動化的構(gòu)建、測試和部署到線上環(huán)境以實現(xiàn)交付高質(zhì)量的產(chǎn)品,持續(xù)部署在某種程度上代表了一個開發(fā)團隊的更新迭代速率。Continuous Delivery
: 持續(xù)交付
是在持續(xù)部署的基礎之上,將產(chǎn)品交付到線上環(huán)境,因此持續(xù)交付是產(chǎn)品價值的一種交付,是產(chǎn)品價值的一種盈利的實現(xiàn)。
- 持續(xù)交付并不是指軟件每一個改動都要盡快的部署到產(chǎn)品環(huán)境中。它指的是任何的修改都已證明可以在任何時候?qū)嵤┎渴稹?持續(xù)
- 交付(Continuous Delivery)是一系列的開發(fā)實踐方法,用來確保讓代碼能夠快速安全的部署到產(chǎn)品環(huán)境中,它通過將每一次改動都提交到一個模擬產(chǎn)品環(huán)境中,使用嚴格的自動化測試,確保業(yè)務應用和服務能符合預期。因為使用完全的自動化過程來把每個變更自動的提交到測試環(huán)境中,所以當業(yè)務開發(fā)完成時,你有信心只需要按一次按鈕就能將應用安全的部署到產(chǎn)品環(huán)境中。
特點:
- 通常將側(cè)重研發(fā)側(cè)的過程稱為CI(持續(xù)集成),側(cè)重正式環(huán)境部署的過程稱為CD(持續(xù)交付)
- 一般不單獨提持續(xù)部署(ContinuousDeployment)
主要工具:
- 代碼倉庫:Git進行管理;靜態(tài)檢查;Sonar集成
- 單元測試:Junit;單測覆蓋率
- JaCoCo插件;編譯打包;
- 集成部署: she11腳本/服務接口;
- 自動化測試:RobotFrameWork,
- 自動化測試平臺;CI報告;Sonar。
- Gitlab+Jenkins+SonarQube+阿里EDAS平臺+RF自動化測試套件等.
一、CI-持續(xù)集成
Martin Flowler對持續(xù)集成是這樣定義的:持續(xù)集成是一種軟件開發(fā)實踐,即團隊開發(fā)成員經(jīng)常集成它們的工作,通常每個成員每天至少集成一次,也就意味著每天可能會發(fā)生多次集成。每次集成都通過自動化的構(gòu)建 (包括編譯,部署,自動化測試)來驗證,從而盡快地發(fā)現(xiàn)集成錯誤。許多團隊發(fā)現(xiàn)這個過程可以大大減少集成的問題,讓團隊能夠更快的開發(fā)內(nèi)聚的軟件。
常用工具:
- 代碼管理:gitlab(企業(yè)自建),gitee(企業(yè)租戶形式使用)
- 持續(xù)集成:jenkins
1.1 安裝部署gitlab
- 官網(wǎng):官網(wǎng),中文官網(wǎng)
- 注意:建議安裝的gitlab在虛擬機中至少給到2G以上內(nèi)存,不然可能會安裝不成功,卡在某個地方報錯
1、下載鏡像
由于官網(wǎng)鏡像太慢,所以在國內(nèi)開源鏡像站中查找。如:清華大學開源軟件鏡像站 - 搜索gitlab鏡像(目前使用社區(qū)版),下載最新。鏡像列表地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
2、登錄服務器,下載鏡像
# 下載
wget https://mirrors.tuna.tsingua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.9.4-ce..el7.x864.rpm
# 安裝郵件服務postfix(gitlab依賴)
yum install postfix
# 啟動郵件服務
systemctl start postfix
# 安裝gitlab
rpm -ivh gitlab-ce-14.9.4-ce.0.el7.x86_64.rpm
3、安裝完成后,根據(jù)提示設置訪問地址
# 修改添加gitlab的訪問地址
vim /etc/gitlab/gitlab.rb
# 進入gitlab.rb編輯內(nèi)容中后-----
external_url 'http://192.168.xx.xx:8000'
# :wq 保存并退出編輯----- ip試自身環(huán)境定
# 開放端口號
firewall-cmd --permanent --zone=public --add-port=8000/tcp
# 重啟防火墻
firewall-cmd --reload
# 查看當前開放端口
firewall-cmd --list-ports
# 重置gitla
gitlab-ctl reconfigure
# 重啟gitlab服務
gitlab-ctl restart
4、重啟完成后,根據(jù)external_url訪問gitlab
- 當遇到502時,可以嘗試多刷新幾次
- 如果一直無法訪問,就通過
gitlab-ctl status
查看運行狀態(tài) - 登錄默認為root,初始密碼默認在/etc/gitlab/initial_root_password中查看,登錄gitlab后自定設置
二、gitlab CI配置
本節(jié)假設已建立一個vue3-vite項目的倉庫,并在項目根目錄新建
.gitlab-ci.yml
- gitlab-ci配置的保留字:image(使用docker image),services(使用docker service),stages(定義工作階段),types(stage的別名),before_script(在工作任務執(zhí)行前執(zhí)行的腳本命令),after_script(在任務執(zhí)行結(jié)束后執(zhí)行的腳本命令),variables(定義變量)
- 配置文件示例
# stages:是保留字,用于定義工程執(zhí)行的階段
stages:
- build
- deploy
# build_job: job名稱,可以自定義
build_job:
stage: build
script:
- 'echo "start build"'
- 'echo "多行輸出"'
deploy_job:
stage: deploy
script: 'echo "start deploy"'
- 以上只是簡單的gitlab-ci配置,而要構(gòu)建gitlab流水線,需要搭配使用runner,runner的安裝一般由管理員部署實現(xiàn),這里略過了。
三、jenkins實現(xiàn)CI / CD
官網(wǎng)地址, jenkins中文網(wǎng)
3.1 安裝jenkins
以centos系統(tǒng)安裝為例,官網(wǎng)參考:https://pkg.jenkins.io/redhat-stable/
- 注意:jenkins依賴于java,所以需要先安裝java jdk
- 根據(jù)官網(wǎng)文檔要求,在對應服務器上下載java及jinkins安裝包
# 安裝(已下載jenkins-2.332.3-1.1.noarch.rpm安裝包
rpm -ivh jenkins-2.332.3-1.1.noarch.rpm
# 查看jenkins配置文件
vim /etc/init.d/jenkins
# 修改配置(端口或USER,視情況定)
vim /etc/sysconfig/jenkins
# 啟動jenkins(首次啟動較慢,可能需要四五分鐘)
service jenkins start
# 獲取初始密碼
tail /var/lib/jenkins/secrets/initialAdminPassword
解鎖jenkins獲取初始密碼
-
首次啟動會推薦安裝插件,但安裝會耗時很久,所以建議不安裝推薦插件,點擊“選擇插件來安裝”后,不勾選插件從而進入下一步。
-
創(chuàng)建管理員用戶
-
配置實例(默認不改就好)
進入系統(tǒng)后,顯示歡迎頁:
- 添加中文插件(Manage Jenkins左側(cè)菜單——》Manage Plugins——》available標簽頁)
3.2 配置CI
1、創(chuàng)建新任務并命名
2、關(guān)聯(lián)gitlab倉庫
此處需要先安裝git插件
在jenkins安裝對應服務器上安裝git
# 安裝
yum install -y git
# 測試安裝是否完成
git --version
- 配置源碼管理
- 添加憑據(jù),向下選擇是否切換分支
- 點擊構(gòu)建,測試是否成功
/var/lib/jenkins/workspace
是jenkins的默認工作目錄,在里面可以看到上一步構(gòu)建拉取到的項目文件
- 新增構(gòu)建步驟(進入上一步新建任務的配置中)
- 配置shell
3.3 配置CD
1、基于上一步的執(zhí)行shell
腳本中,繼續(xù)添加shell
- jenkins的默認工作路徑為
/var/lib/jenkins/workspace/DemoTest
,但不排除有時不是這個路徑,所以可以使用jenkins環(huán)境變量的方式來直接進入。 - 項目工程工作路徑目錄環(huán)境變量:
$WORKSPACE
(Linux環(huán)境中),如jenkins安裝在windows系統(tǒng)下,則是%變量名%的形式
cd $WORKSPACE
# 安裝依賴
npm install
# 打包
npm run build
# 進入打包后目錄
cd dist
# 壓縮前先刪除已有壓縮包
rm -f demotest.tar.gz
# 壓縮所有文件
tar -zcvf demotest.tar.gz *
# 查看dist目錄
ll
2、將上一步的壓縮包,傳到nginx服務器
- 先安裝 publish over ssh插件(用于推送壓縮包)
- 配置Publish Over ssh (對應nginx服務根目錄)
- 添加構(gòu)建后操作
- 添加構(gòu)建后操作配置(注意:對應nginx服務器上已創(chuàng)建demotest文件夾的前提下,且配置了nginx對demotest路徑的配置)
3.4 其他構(gòu)建方式
1、定時構(gòu)建
1、打開demotest任務的配置,切到構(gòu)建觸發(fā)器
2、指定參數(shù)構(gòu)建
1、安裝git parameter插件
2、修改任務配置——勾選“參數(shù)化構(gòu)建過程”
3、添加Git參數(shù)配置
4、修改“源碼管理”處的指定分支
5、查看可用構(gòu)建的標簽和分支(選中后,點擊開始構(gòu)建即可)
3、webhook自動根據(jù)git事件進行構(gòu)建
1、添加插件文章來源:http://www.zghlxwxcb.cn/news/detail-703722.html
2、打開demotest配置(在安裝gitlab插件后,會新增一個構(gòu)建觸發(fā)器選項如下)
3、到gitlab中配置出站請求(gitlab群組管理中設置)
設置——》網(wǎng)絡——》出站請求
4、設置webhooks(對應代碼倉庫中設置)
5、測試push event文章來源地址http://www.zghlxwxcb.cn/news/detail-703722.html
到了這里,關(guān)于第七章:敏捷開發(fā)工具方法-part2-CI/CD工具介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!