05 搭建jenkins實現自動化部署(自動化部署工具jenkins,從此擺脫重復單調的工作)

时间:2024-05-03 19:03:35 编辑: 来源:

ING_OAP_PORT = 11800

def deploylist=[]

deploylist.add("runjar -f 'cdd-service/target/cdd1.jar' -v '/data/cddm'  -j '-Xms512m -Xmx512m' -h **.16.200.28")

deploylist.add("runjar -f 'report-executor/target/cdd1.jar' -v '/data/cddm' -j '-Dna買粉絲s.logging.default.買粉絲nfig.enabled=false -Xms512m -Xmx512m' -h **.16.200.22")

map.put('DEPLOY_RUN',deploylist)

//################

DockerBuild("maven",map);

「自動化運維」從0到1 CICD自動化部署落地分享

目錄

一、CICD簡介

二、CICD實踐過程

三、含淚踩坑

四、 歷史 文章指路

一、CICD簡介

1、CICD定義

2、DevOps定義

DevOps(Development和Operations的組合詞)是一組過程、方法與系統的統稱,用于促進開發(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。

DevOps的基礎核心是CICD。

CICD的基礎核心是自動化。

二、CICD實踐過程

1、起因

在我之前的團隊,因為要切換全新業務線,需要為新業務搭建一套全新的環境,所有東西從0開始。

原先只是用于部署測試環境,后面決定一起部署生產環境,這個過程中我還造成了一個嚴重生產環境問題,好在當時的生產環境還未正式使用,未造成嚴重影響。

在當時挺害怕也挺有壓力的,但是后面項目完整落地,平穩運行,我還是挺有成就感的,接下來我將整個項目過程完整的分享出來。

2、技術棧選型

首先進行技術棧選型,我們選擇的是Jenkins,Jenkins當屬業內持續集成老大哥,有著非常豐富的插件,也可以選擇gitlab集成的CICD,因為我們還有其它的測試腳本需要集成,所以Jenkins對于我們來說是最優的選擇;

Ansible是批量運維工具,通過編寫yaml腳本,可以方便實現批量管理多臺機器,并且Ansible是比較輕量級應用,很容易上手;

shell腳本可以用于執行一系列命令。

其它的就結合團隊項目情況進行搭建。

3、Jenkins應用部署實現流程

首先來梳理下整個項目的實現流程,主要分為Jenkins主節點和應用服務器,是一對多的關系。

Jenkins主節點的主要負責項目部署前的工作,主要包含拉取代碼,前端打包,后端打包,快照版檢測,將壓縮包和部署腳本發送到目標機器(即應用服務器),遠程調用目標機器上的部署腳本進行代碼替換。

應用服務器部署腳本執行過程有:解壓壓縮包,停止服務,覆蓋代碼,拉取dis買粉絲nf,應用目錄分組賦權,重啟服務,檢查服務是否有進程,查看啟動日志,刪除/tmp目錄下舊壓縮包。

Jenkins應用部署流程圖

4、任務計劃

4.1、搭建環境

Jenkins

指路【Jenkins系列】如何搭建Jenkins環境。

Ansible

Git

GitLab

因為這個我沒有實踐成功的教程,所以在這里就不貼啦~

Node.js

Maven

JDK

Nginx

2、編寫前置腳本

3、編寫應用部署腳本

4、Jenkins配置

指路【Jenkins系列】如何構建Jenkins Job。

新增Job,主要用于拉取代碼,執行Maven編譯,執行app_build.sh,將壓縮包通過ssh發送到目標機器,遠程調用目標機器的deploy.sh。

三、含淚踩坑

踩坑1

問題描述:在錯誤的路徑拉取配置,原因是未成功解壓壓縮包。

解決方案:校驗壓縮包是否解壓成功解壓成功,并且在cd到正確的路徑后添加&&(&&表示上一條命令執行成功再執行下一條命令)才進行拉取配置。

踩坑2

問題描述:項目沒有正常停止,導致無法重新啟動。

解決方案:雖然執行kill -9,但是未找到根本原因,因此加了一個檢測機制,如果檢測沒有正常停止服務,則退出程序。

踩坑3

問題描述:生產部署腳本拉取了開發環境的的jdbc配置,原因是生產部署腳本寫錯了開發環境dis買粉絲nf的域名,當時我同時在搞開發生產環境的腳本,開發和生產是兩套不同的腳本,一時混亂寫錯了,嚇得一批,好在當時生產環境還沒投產使用。

解決方案:為了避免后續這種情況的發生,而且是必須避免的,我們通過環境名稱來判斷走開發還是生產域名,這樣就能保證腳本一致性了。

在這個項目實際遇到的問題遠不止上面這幾個,在這個實踐過程中,我對整個應用部署流程有了更深的理解,平時方方面面的學習終于集中化起來進行實踐了。

我習慣將學到的知識和遇到的問題記錄起來,在寫這篇文章的過程回過頭來看,五味雜陳,原來我都經歷了這些哈哈哈......

踩過的坑終究使我更加強大,帶你見證呱呱本呱成長為參天大呱~

搞測試,不迷路

呱呱大王本呱帶你飛!

搜索关键词: