CICD整體介紹
一措左、產(chǎn)品上線流程
1、運(yùn)營與用戶進(jìn)行交流與溝通避除,確認(rèn)需求
2怎披、運(yùn)營將需求轉(zhuǎn)交給產(chǎn)品經(jīng)理,產(chǎn)品經(jīng)理分析需求瓶摆,確認(rèn)需求凉逛,注意: 確認(rèn)需求之后要進(jìn)行內(nèi)部會(huì)議,確認(rèn)產(chǎn)品的可行性群井,并且將需求轉(zhuǎn)換為具體的項(xiàng)目方向(用戶提出的需求都是一個(gè)比較大的方向状飞,需求提出人員要和用戶進(jìn)行溝通,確認(rèn)需求是否滿足期望)
3书斜、需求可行性通過之后诬辈,產(chǎn)品經(jīng)理要和設(shè)計(jì)師共同協(xié)作完成PRD(產(chǎn)品需求文檔)和原型
4、UI根據(jù)需求文檔和原型進(jìn)行UI設(shè)計(jì)
5荐吉、需求和原型設(shè)計(jì)出來之后焙糟,產(chǎn)品經(jīng)理將需求轉(zhuǎn)交給相關(guān)的業(yè)務(wù)開發(fā)人員,業(yè)務(wù)開發(fā)人員首先根據(jù)項(xiàng)目需求進(jìn)行項(xiàng)目可行性分析样屠,然后并根據(jù)具體項(xiàng)目給出開發(fā)周期穿撮,最后將項(xiàng)目具體分工到開發(fā)人員
6、開發(fā)人員完成項(xiàng)目(保證項(xiàng)目可run痪欲,并且對(duì)項(xiàng)目進(jìn)行了code review之后提交)之后悦穿,移交測試人員進(jìn)行測試
7、測試人員寫測試用例勤揩,編寫測試文檔咧党,最后編寫測試報(bào)告,通過發(fā)郵箱的方式告知開發(fā)人員陨亡,測試有BUG則告知開發(fā)人員進(jìn)行修改
8傍衡、測試通過之后深员,移交產(chǎn)品經(jīng)理進(jìn)行驗(yàn)收,不通過則返回修改蛙埂,通過則告知運(yùn)維人員準(zhǔn)備上線倦畅,
9、運(yùn)維人員接到通知之后绣的,進(jìn)行上線準(zhǔn)備叠赐,首先在測試環(huán)境測試完畢之后,移交預(yù)生產(chǎn)環(huán)境進(jìn)行測試屡江,確保萬無一失之后部署項(xiàng)目上線生產(chǎn)環(huán)境芭概,項(xiàng)目上生產(chǎn)環(huán)境之前發(fā)郵箱通知領(lǐng)導(dǎo),項(xiàng)目上線完畢之后也要通知相關(guān)領(lǐng)導(dǎo)
二惩嘉、項(xiàng)目上線流程
開發(fā)環(huán)境罢洲,測試環(huán)境,預(yù)生產(chǎn)環(huán)境文黎,生產(chǎn)環(huán)境的區(qū)別
1惹苗、開發(fā)環(huán)境: 顧名思義,開發(fā)人員使用的環(huán)境
2耸峭、測試環(huán)境: 顧名思義桩蓉,測試人員使用的環(huán)境,測試環(huán)境不會(huì)連接生產(chǎn)環(huán)境的數(shù)據(jù)庫劳闹,數(shù)據(jù)都是測試人員偽造的虛擬數(shù)據(jù)
3院究、預(yù)生產(chǎn)環(huán)境:測試環(huán)境到生產(chǎn)環(huán)境的過濾,預(yù)生產(chǎn)環(huán)境一般都會(huì)連接生產(chǎn)環(huán)境的數(shù)據(jù)庫玷或,力求做到和生產(chǎn)環(huán)境一致儡首,測試時(shí)候要注意片任,避免產(chǎn)生臟數(shù)據(jù)偏友,影響生產(chǎn)環(huán)境的使用
4、生產(chǎn)環(huán)境: 即線上環(huán)境对供,用戶直接訪問的環(huán)境位他,
另外,還有個(gè)灰度發(fā)布产场,發(fā)生在預(yù)發(fā)布環(huán)境之后鹅髓,生產(chǎn)環(huán)境之前。
生產(chǎn)環(huán)境一般會(huì)部署在多臺(tái)機(jī)器上京景,以防某臺(tái)機(jī)器出現(xiàn)故障窿冯,這樣其他機(jī)器可以繼續(xù)運(yùn)行,不影響用戶使用确徙⌒汛灰度發(fā)布會(huì)發(fā)布到其中的幾臺(tái)機(jī)器上执桌,驗(yàn)證新功能是否正常。如果失敗芜赌,只需回滾這幾臺(tái)機(jī)器即可仰挣。
1、開發(fā)環(huán)境部署到測試環(huán)境
這里用jenkins+Gitlab+Maven的方式對(duì)項(xiàng)目進(jìn)行上線
jenkinsCI主要使用的有webhook缠沈,輪詢膘壶,參數(shù)化三種構(gòu)建方式,這里使用webhook的方式進(jìn)行觸發(fā)式構(gòu)建
使用webook機(jī)你向嗯構(gòu)建的理由: 當(dāng)開發(fā)人員合并分支到master觸發(fā)webhook的時(shí)候洲愤,jenkins不需要人員的干預(yù)颓芭,實(shí)現(xiàn)了自動(dòng)化構(gòu)建
具體構(gòu)建步驟
1、初始化柬赐,配置Gitlab中代碼倉庫的webhook
2畜伐、創(chuàng)建pipeline類型工程 ===》 一個(gè)工程對(duì)應(yīng)一個(gè)項(xiàng)目對(duì)應(yīng)一個(gè)webhook
3、通過maven對(duì)java項(xiàng)目進(jìn)行打包
注意; 對(duì)java項(xiàng)目進(jìn)行打包躺率,可以打包成jar或者war包玛界,打包成jar包可以直接通過java命令運(yùn)行,war需要通過tomcat中間件運(yùn)行
4悼吱、包管理
包管理服務(wù)器創(chuàng)建不同的項(xiàng)目目錄慎框,區(qū)分版本和項(xiàng)目
5、發(fā)布(編寫對(duì)應(yīng)的腳本)
6后添、因?yàn)閖ava不能動(dòng)態(tài)加載笨枯,需要重啟服務(wù),重啟服務(wù)(自定義重啟腳本)
7遇西、確認(rèn)發(fā)布是否成功馅精?可以通過查看進(jìn)程,查看端口粱檀,以及訪問API接口的方式進(jìn)行判斷
8洲敢、通知開發(fā)、測試(以郵箱的方式發(fā)送)
2茄蚯、部署到預(yù)生產(chǎn)環(huán)境上
這里用jenkins+Gitlab+Maven的方式對(duì)項(xiàng)目進(jìn)行上線
jenkinsCI主要使用的有webhook压彭,輪詢,參數(shù)化三種構(gòu)建方式渗常,這里使用參數(shù)化構(gòu)建的方式部署項(xiàng)目
具體構(gòu)建步驟
ansible dev-hosts 通過ansible指定資產(chǎn)清單文件的方式進(jìn)行上線
[project_1]
IP-1 # 這里代表的是預(yù)生產(chǎn)服務(wù)器
IP-2
1壮不、jenkins參數(shù)化構(gòu)建
參數(shù):
項(xiàng)目名稱
Serice_status 服務(wù)狀態(tài)
發(fā)布方式 選項(xiàng)參數(shù)
publish
reback
回滾指定版本文件(文件參數(shù))
發(fā)布腳本
#!/bin/env bash
PROJECT_NAME=$1
SERVICE_STATUS=$2
PUBLISH_TYPE=$3
ROLLBACK_VERSION=$4
1、拉取代碼
rpm -qa | grep ^git-
if [ ! $? -eq 0 ];then
yum -y install git
fi
ssh方式拉取代碼之前先將機(jī)器的公鑰上傳到gitlab服務(wù)器上
git clone git@ip:user/project.git
2皱碘、通過maven對(duì)java項(xiàng)目進(jìn)行打包
maven
3询一、mv 包管理文件夾
mv
4、根據(jù)參數(shù)進(jìn)行上線或者回滾
if [ "$PUBLISH_TYPE" == "publish" ];then
ansible -i dev-hosts 組名 -m copy -a "src=xx.jar dest=/app/pro"
else
fi
5、重啟服務(wù)
6健蕊、檢查進(jìn)程
3缓醋、部署到生產(chǎn)環(huán)境上的步驟與部署到預(yù)生產(chǎn)類似
4、灰度環(huán)境
灰度環(huán)境: 生產(chǎn)環(huán)境有多臺(tái)服務(wù)器绊诲,當(dāng)有新版本需要發(fā)布的時(shí)候送粱,可以現(xiàn)在其中幾臺(tái)服務(wù)器上進(jìn)行測試或者現(xiàn)在某些地方進(jìn)行測試,查看新版本上線是否有問題
前端代碼打包
npm run build
npm run build 打包后生成一個(gè) dist 文件夾掂之,這里面的目錄: