掌握J(rèn)enkins自動(dòng)化部署:從代碼提交到自動(dòng)上線(xiàn)的全流程揭秘
Jenkins自動(dòng)化部署是現(xiàn)代軟件開(kāi)發(fā)中不可或缺的一部分,它不僅簡(jiǎn)化了代碼的發(fā)布過(guò)程,還為整個(gè)團(tuán)隊(duì)帶來(lái)了無(wú)與倫比的效率和協(xié)作力。想象一下,開(kāi)發(fā)者們可以專(zhuān)注于編寫(xiě)高質(zhì)量的代碼,而不是為繁瑣的手動(dòng)部署所煩惱;測(cè)試人員能在每次提交代碼后立即看到測(cè)試結(jié)果,確保軟件質(zhì)量;運(yùn)營(yíng)團(tuán)隊(duì)不再需要熬夜加班來(lái)手動(dòng)發(fā)布新版本,而是可以安心地看到系統(tǒng)自動(dòng)完成一切。
Jenkins自動(dòng)化部署的意義在于它賦予了開(kāi)發(fā)團(tuán)隊(duì)一種近乎魔法般的力量,將復(fù)雜、易出錯(cuò)的手動(dòng)操作變?yōu)楹?jiǎn)單、高效的流水線(xiàn)流程。通過(guò)CI/CD(持續(xù)集成/持續(xù)部署),每一次代碼的提交都能觸發(fā)自動(dòng)化的構(gòu)建、測(cè)試和部署,確保每一個(gè)版本的上線(xiàn)都是經(jīng)過(guò)嚴(yán)格測(cè)試和驗(yàn)證的。這種無(wú)縫的工作流不僅提高了開(kāi)發(fā)速度,還顯著降低了風(fēng)險(xiǎn),讓軟件的發(fā)布更為可靠。
可以說(shuō),Jenkins自動(dòng)化部署不僅是技術(shù)上的進(jìn)步,更是一種開(kāi)發(fā)理念的革新。它讓軟件開(kāi)發(fā)變得更高效、更可靠、更具創(chuàng)新力。只要你體驗(yàn)過(guò)Jenkins帶來(lái)的便利,你就再也不會(huì)回到手動(dòng)部署的時(shí)代,因?yàn)槟欠N“代碼一提交,系統(tǒng)自己搞定”的感覺(jué),實(shí)在是太讓人欲罷不能了!
這就是Jenkins的力量,它不僅改變了開(kāi)發(fā)的方式,也改變了我們對(duì)軟件開(kāi)發(fā)的認(rèn)知。如果你還沒(méi)嘗試過(guò)Jenkins,現(xiàn)在就是最好的時(shí)機(jī),去體驗(yàn)一下現(xiàn)代開(kāi)發(fā)的魅力吧!
1.Jenkins工作流程
當(dāng)你提交代碼后,Jenkins能夠自動(dòng)觸發(fā)部署的背后,是一整套自動(dòng)化構(gòu)建和交付的流水線(xiàn)(Pipeline)在起作用。這里我將詳細(xì)介紹Jenkins的工作流程和內(nèi)部原理,包括它如何監(jiān)控代碼庫(kù)的變化、觸發(fā)構(gòu)建、執(zhí)行測(cè)試、打包以及最終部署到服務(wù)器的過(guò)程。
1.源代碼管理(SCM)輪詢(xún)或Webhooks觸發(fā)
?SCM輪詢(xún):Jenkins會(huì)定期檢查(輪詢(xún))配置的源代碼管理系統(tǒng)(如Git、SVN等)的倉(cāng)庫(kù),看是否有新的提交或代碼更改。如果檢測(cè)到變化,就會(huì)觸發(fā)構(gòu)建任務(wù)。這種方法需要Jenkins定時(shí)訪(fǎng)問(wèn)代碼庫(kù),可能會(huì)有一定的延遲。
?Webhooks:相比之下,Webhooks是一種更為實(shí)時(shí)的觸發(fā)方式。開(kāi)發(fā)者提交代碼后,源代碼管理系統(tǒng)會(huì)立即向Jenkins發(fā)送一個(gè)HTTP請(qǐng)求(Webhook),通知Jenkins有新提交。這使得Jenkins能夠更快響應(yīng)代碼變化,立即啟動(dòng)構(gòu)建過(guò)程。
2.觸發(fā)構(gòu)建任務(wù)
一旦Jenkins接收到代碼變更的通知,它會(huì)根據(jù)配置的Pipeline或Job來(lái)決定如何處理這次構(gòu)建。Jenkins中的Pipeline是基于Groovy腳本的,它定義了從代碼提交到最終部署的整個(gè)流程。
3.流水線(xiàn)(Pipeline)階段
Pipeline分為多個(gè)階段,每個(gè)階段都可以獨(dú)立執(zhí)行一組任務(wù)。這些階段通常包括:
?Checkout代碼:Jenkins從源代碼管理系統(tǒng)中將最新的代碼拉取到構(gòu)建節(jié)點(diǎn)上。這一步通常使用插件(如Git插件)來(lái)與代碼庫(kù)交互。
?構(gòu)建(Build):Jenkins根據(jù)配置的構(gòu)建工具(如Maven、Gradle)對(duì)代碼進(jìn)行編譯、打包。在這一步,代碼會(huì)被轉(zhuǎn)化為可執(zhí)行的應(yīng)用程序包(如JAR、WAR文件)或Docker鏡像。
?測(cè)試(Test):Jenkins會(huì)運(yùn)行自動(dòng)化測(cè)試腳本,包括單元測(cè)試、集成測(cè)試、功能測(cè)試等。這一步至關(guān)重要,因?yàn)樗_保代碼在引入新變更后仍然是穩(wěn)定和可靠的。
?代碼質(zhì)量分析(Optional):Jenkins可以執(zhí)行代碼質(zhì)量檢查,使用工具如SonarQube來(lái)分析代碼的復(fù)雜度、安全性和可維護(hù)性,并生成報(bào)告。
?部署(Deploy):當(dāng)所有前面的步驟都成功完成后,Jenkins會(huì)執(zhí)行部署階段。根據(jù)配置,它可以將構(gòu)建產(chǎn)物部署到不同的環(huán)境,如開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境或生產(chǎn)環(huán)境。這一步可以通過(guò)SSH、FTP、容器化部署(Docker、Kubernetes)或云服務(wù)API來(lái)實(shí)現(xiàn)。
4.工作節(jié)點(diǎn)(Agent)與主節(jié)點(diǎn)(Master)協(xié)作
Jenkins采用主從架構(gòu),其中主節(jié)點(diǎn)(Master)負(fù)責(zé)調(diào)度任務(wù)、管理工作隊(duì)列、監(jiān)控節(jié)點(diǎn)狀態(tài)等。工作節(jié)點(diǎn)(Agent)實(shí)際執(zhí)行構(gòu)建任務(wù),如代碼編譯、測(cè)試和部署等。
當(dāng)Pipeline被觸發(fā)時(shí),Jenkins主節(jié)點(diǎn)會(huì)分配一個(gè)或多個(gè)工作節(jié)點(diǎn)來(lái)執(zhí)行具體任務(wù)。工作節(jié)點(diǎn)從主節(jié)點(diǎn)獲取任務(wù)后,開(kāi)始執(zhí)行相應(yīng)的步驟,完成后將結(jié)果返回給主節(jié)點(diǎn)。
5.Jenkinsfile(流水線(xiàn)腳本)
Jenkinsfile是定義Pipeline的腳本文件,通常存儲(chǔ)在代碼庫(kù)中。這使得整個(gè)構(gòu)建、測(cè)試和部署的流程代碼化,并與項(xiàng)目代碼一起版本控制。在Jenkinsfile中,你可以定義Pipeline的各個(gè)階段、條件邏輯、并行任務(wù)等。
6.通知與反饋
Jenkins在構(gòu)建和部署過(guò)程中會(huì)生成實(shí)時(shí)的日志,并在任務(wù)完成后發(fā)送通知(如通過(guò)電子郵件、Slack)。如果構(gòu)建失敗,Jenkins會(huì)立即通知相關(guān)人員,以便他們能夠快速響應(yīng)和修復(fù)問(wèn)題。
7.持續(xù)集成與持續(xù)交付/部署(CI/CD)
整個(gè)流程的核心思想是CI/CD,通過(guò)持續(xù)集成和交付,讓開(kāi)發(fā)團(tuán)隊(duì)能夠頻繁地提交代碼,并自動(dòng)化測(cè)試、構(gòu)建和部署,減少人為錯(cuò)誤,提升軟件發(fā)布的效率和質(zhì)量。
可以通過(guò)一張圖來(lái)直觀展示Jenkins在整個(gè)流程中扮演的角色,具體如下所示:該圖主要對(duì)比了人工部署與Jenkins自動(dòng)化部署的過(guò)程。

在這里插入圖片描述
Jenkins的工作流程是通過(guò)SCM輪詢(xún)或Webhooks來(lái)實(shí)時(shí)監(jiān)控代碼變化,使用Pipeline將構(gòu)建、測(cè)試、打包、部署等步驟串聯(lián)起來(lái),自動(dòng)化地將應(yīng)用程序從開(kāi)發(fā)環(huán)境推送到生產(chǎn)環(huán)境。其主從架構(gòu)、可配置的Pipeline、廣泛的插件支持,使得Jenkins成為了自動(dòng)化部署的強(qiáng)大工具,讓整個(gè)軟件開(kāi)發(fā)生命周期變得更加高效和可靠。
下面,讓我們一起踏入使用Jenkins自動(dòng)部署Spring Boot項(xiàng)目的奇妙之旅!
2.搭建Jenkins
1.創(chuàng)建一個(gè)數(shù)據(jù)目錄
# 創(chuàng)建 jenkins 目錄 mkdir/data/jenkins_home/ # 修改目錄的所有者,以便于 Jenkins 容器能夠操作該目錄 chown-R 1000:1000 /data/jenkins_home/
2.拉取jenkins鏡像
docker pull jenkins/jenkins:lts
3.啟動(dòng)jenkins容器
為了防止與 Spring Boot 默認(rèn)使用的 8080 端口發(fā)生沖突,我選擇將 Jenkins 服務(wù)器的訪(fǎng)問(wèn)端口配置為 8088。此外,在確保 Jenkins 可以從外部網(wǎng)絡(luò)訪(fǎng)問(wèn)的同時(shí),也需要在云服務(wù)器的安全組中配置防火墻規(guī)則來(lái)開(kāi)放 8088 端口,這樣外部客戶(hù)端才能通過(guò)此端口訪(fǎng)問(wèn)到 Jenkins 服務(wù)器。
docker run -d --name jenkins -p 8088:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
這樣的配置不僅能夠確保 Jenkins 服務(wù)與其他可能運(yùn)行在同一服務(wù)器上的服務(wù)(如 Spring Boot 應(yīng)用)之間不會(huì)產(chǎn)生端口沖突,還能通過(guò)精細(xì)控制防火墻規(guī)則來(lái)提高系統(tǒng)的安全性。
在云服務(wù)器的安全組設(shè)置中,你需要添加一條入站規(guī)則,允許來(lái)自特定 IP 地址或 IP 范圍的流量通過(guò) 8088 端口進(jìn)入服務(wù)器。這樣既能保證 Jenkins 的可用性,也能限制不必要的網(wǎng)絡(luò)訪(fǎng)問(wèn),從而提升整體安全性。
4.訪(fǎng)問(wèn)Jenkins
一旦Jenkins容器啟動(dòng),你可以通過(guò)訪(fǎng)問(wèn)http://localhost:8088來(lái)訪(fǎng)問(wèn)Jenkins界面。(注意:這里的localhost對(duì)應(yīng)的你的云服務(wù)器IP地址!)
首次訪(fǎng)問(wèn)時(shí),系統(tǒng)會(huì)要求你輸入初始管理員密碼。

在這里插入圖片描述
5.獲取管理員密碼
可以直接去宿主機(jī)的 /data/jenkins_home/secrets/initialAdminPassword 位置查看初始化密碼,具體如下所示:(這里的/data/jenkins_home/是前面你自己設(shè)置的Jenkins工作目錄)。

在這里插入圖片描述
獲取管理員密碼之后就可以直接使用admin賬戶(hù)進(jìn)行登錄,登錄之后的界面如下所示:

在這里插入圖片描述
3.安裝Maven
在Jenkins自動(dòng)化部署中,Maven被安裝在服務(wù)器上是為了執(zhí)行項(xiàng)目的構(gòu)建任務(wù),包括代碼編譯、依賴(lài)管理、測(cè)試執(zhí)行和打包操作。通過(guò)Maven,Jenkins能夠自動(dòng)化地將源代碼轉(zhuǎn)換為可部署的應(yīng)用程序包(如JAR或WAR文件),確保項(xiàng)目按需構(gòu)建并滿(mǎn)足所有依賴(lài)。
1.下載Maven
訪(fǎng)問(wèn)Maven官方下載頁(yè)面,選擇需要的版本,復(fù)制下載鏈接。使用wget命令下載Maven。例如下載Maven 3.8.8版本:
wget https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
2.解壓文件
將下載的文件解壓到你想要安裝的位置,例如/opt目錄:
sudotar -zxvf apache-maven-3.8.8-bin.tar.gz -C /opt
3.配置環(huán)境變量
為了方便使用Maven,需要配置環(huán)境變量。編輯/etc/profile文件:
sudovi /etc/profile在文件末尾添加以下內(nèi)容:
exportM2_HOME=/opt/apache-maven-3.8.8 exportPATH=$M2_HOME/bin:$PATH
4.使環(huán)境變量生效
保存文件并退出編輯器,然后使環(huán)境變量生效:
source/etc/profile
5.驗(yàn)證安裝
現(xiàn)在可以通過(guò)以下命令驗(yàn)證Maven是否安裝成功:
mvn -version如果安裝成功,你將看到Maven的版本信息。

在這里插入圖片描述
4.安裝插件
在Jenkins啟動(dòng)成功后,安裝以下三個(gè)插件能夠增強(qiáng)其功能,滿(mǎn)足特定的項(xiàng)目需求:
1.Gitee
?功能:Gitee插件允許Jenkins與Gitee代碼倉(cāng)庫(kù)集成,支持從Gitee倉(cāng)庫(kù)中拉取代碼、觸發(fā)構(gòu)建任務(wù)。這對(duì)于使用Gitee進(jìn)行源代碼管理的團(tuán)隊(duì)非常有用,能簡(jiǎn)化CI/CD流程。
?安裝:在“插件管理”界面,搜索“Gitee”插件并安裝。安裝后,可以在Jenkins的項(xiàng)目配置中添加Gitee倉(cāng)庫(kù)的訪(fǎng)問(wèn)信息,配置Webhook以便代碼提交時(shí)自動(dòng)觸發(fā)構(gòu)建。
2.Maven Integration
?功能:Maven Integration插件允許Jenkins與Maven無(wú)縫集成,使得Jenkins可以直接調(diào)用Maven進(jìn)行項(xiàng)目的構(gòu)建、測(cè)試和打包。這對(duì)于Java項(xiàng)目尤其重要,因?yàn)镸aven能夠自動(dòng)管理項(xiàng)目依賴(lài)、編譯代碼,并生成可部署的包(如JAR、WAR)。
?安裝:在Jenkins管理界面中,導(dǎo)航到“插件管理” -> “可選插件”,搜索“Maven Integration”并點(diǎn)擊“安裝”。
3.Publish Over SSH
?功能:Publish Over SSH插件允許Jenkins通過(guò)SSH將構(gòu)建生成的文件(如JAR、WAR包)安全地傳輸?shù)竭h(yuǎn)程服務(wù)器上。這對(duì)于部署過(guò)程至關(guān)重要,尤其是當(dāng)需要將構(gòu)建產(chǎn)物自動(dòng)部署到生產(chǎn)或測(cè)試服務(wù)器時(shí)。
?安裝:同樣在“插件管理”界面,搜索“Publish Over SSH”并安裝。安裝后,你可以在“系統(tǒng)管理”中配置SSH服務(wù)器的連接信息。
通過(guò)安裝這些插件,Jenkins能夠更好地支持項(xiàng)目構(gòu)建、打包、部署和代碼管理,大大提高自動(dòng)化部署的效率和靈活性。
具體的安裝步驟如下所示:點(diǎn)擊左邊的系統(tǒng)管理,然后選擇右邊的插件管理,進(jìn)行配置。

在這里插入圖片描述
之后在可選插件中,搜索 Maven Integration 和 Publish Over SSH 以及 Gitee 三個(gè)插件安裝即可:

在這里插入圖片描述
全部插件安裝完成之后,最好登錄服務(wù)器,重啟Jenkins容器以更新插件!具體命令如下:
docker restart jenkins
5.全局工具配置
在使用Jenkins進(jìn)行自動(dòng)化部署之前,進(jìn)行一些全局工具的配置是必要的,這樣可以確保Jenkins能夠正確調(diào)用這些工具來(lái)完成構(gòu)建、測(cè)試和部署任務(wù)。

在這里插入圖片描述
以下是Jenkins通常需要配置的全局工具:
1.JDK(Java Development Kit)
?為什么需要:Jenkins本身是基于Java的應(yīng)用,并且許多構(gòu)建工具(如Maven、Gradle)也依賴(lài)JDK。因此,配置JDK是必不可少的。
?配置方法:在Jenkins的“系統(tǒng)管理” -> “全局工具配置”中,找到JDK配置部分,點(diǎn)擊“添加JDK”,指定JDK的安裝路徑,或者選擇自動(dòng)安裝。
2.Maven
?為什么需要:Maven是Java項(xiàng)目構(gòu)建的標(biāo)準(zhǔn)工具,用于依賴(lài)管理、代碼編譯、測(cè)試和打包。通過(guò)配置Maven,Jenkins可以調(diào)用Maven進(jìn)行項(xiàng)目構(gòu)建。
?配置方法:在“全局工具配置”中找到Maven配置部分,點(diǎn)擊“添加Maven”,指定Maven的安裝路徑,或者選擇自動(dòng)安裝。

在這里插入圖片描述
3.Git
?為什么需要:大多數(shù)項(xiàng)目都使用Git進(jìn)行源代碼管理。通過(guò)配置Git,Jenkins可以從Git倉(cāng)庫(kù)中拉取代碼并進(jìn)行構(gòu)建。
?配置方法:在“全局工具配置”中找到Git配置部分,添加Git安裝路徑,或者選擇自動(dòng)安裝。確保Jenkins可以訪(fǎng)問(wèn)正確版本的Git(由于 Jenkins 容器中已經(jīng)存在 git 了,所以這里不需要額外安裝 git,默認(rèn)即可)。

在這里插入圖片描述
4.Gradle(可選)
?為什么需要:對(duì)于使用Gradle構(gòu)建的項(xiàng)目,配置Gradle工具是必要的。Gradle是另一個(gè)流行的構(gòu)建工具,尤其在Android開(kāi)發(fā)中被廣泛使用。
?配置方法:在“全局工具配置”中,找到Gradle配置部分,點(diǎn)擊“添加Gradle”,指定Gradle的安裝路徑或選擇自動(dòng)安裝。
全局工具配置是確保Jenkins能夠順利執(zhí)行構(gòu)建、測(cè)試和部署任務(wù)的基礎(chǔ)。通過(guò)配置JDK、Maven、Git等工具,Jenkins可以與這些構(gòu)建工具無(wú)縫集成,自動(dòng)化地完成從代碼拉取到部署的整個(gè)流程。這些配置不僅提高了Jenkins的靈活性和適用性,還簡(jiǎn)化了每個(gè)項(xiàng)目的具體配置工作。
6.系統(tǒng)配置
在Jenkins中進(jìn)行系統(tǒng)配置時(shí),Publish Over SSH和Gitee的配置是實(shí)現(xiàn)代碼部署和與代碼倉(cāng)庫(kù)集成的關(guān)鍵步驟。以下是詳細(xì)的配置步驟介紹:
1.Publish Over SSH 配置
Publish Over SSH插件允許Jenkins通過(guò)SSH將構(gòu)建生成的文件(如JAR、WAR包)安全地傳輸?shù)竭h(yuǎn)程服務(wù)器上。以下是配置步驟:
步驟 1: 安裝 Publish Over SSH 插件
? 如果前面已經(jīng)安裝請(qǐng)忽略步驟1
? 登錄Jenkins的管理界面。
? 在Jenkins首頁(yè),點(diǎn)擊左側(cè)菜單中的“系統(tǒng)管理”或“Manage Jenkins”。
? 在管理頁(yè)面中,選擇“插件管理”或“Manage Plugins”。
? 在“可選插件”或“Available Plugins”選項(xiàng)卡中,搜索Publish Over SSH。
? 勾選插件并點(diǎn)擊“安裝”,等待插件安裝完成。
步驟 2: 配置 SSH 服務(wù)器
? 插件安裝完成后,返回“系統(tǒng)管理”頁(yè)面,選擇“系統(tǒng)配置”或“Configure System”。
? 向下滾動(dòng)頁(yè)面,找到Publish Over SSH部分。
? 點(diǎn)擊“添加”按鈕,配置一個(gè)新的SSH服務(wù)器:
?Name: 為服務(wù)器配置一個(gè)易記的名稱(chēng)。
?Hostname: 輸入目標(biāo)服務(wù)器的IP地址或主機(jī)名。
?Username: 輸入用于登錄到目標(biāo)服務(wù)器的用戶(hù)名。
?Remote Directory: 指定在遠(yuǎn)程服務(wù)器上的默認(rèn)目錄,Jenkins將把構(gòu)建產(chǎn)物傳輸?shù)酱四夸洝?/p>
?Use password authentication, or use a different key: 選擇是使用密碼認(rèn)證,還是提供私鑰文件進(jìn)行認(rèn)證。
? 如果使用密鑰認(rèn)證,配置私鑰文件路徑或直接粘貼私鑰內(nèi)容。
? 點(diǎn)擊“測(cè)試配置”或“Test Configuration”按鈕,驗(yàn)證Jenkins是否能夠成功連接到目標(biāo)服務(wù)器。

在這里插入圖片描述
步驟 3: 保存配置
? 配置完成后,點(diǎn)擊頁(yè)面底部的“保存”或“應(yīng)用”按鈕,以確保你的設(shè)置被保存。
2.Gitee 配置
通過(guò)配置Gitee,Jenkins能夠與Gitee代碼倉(cāng)庫(kù)集成,實(shí)現(xiàn)代碼的自動(dòng)拉取和構(gòu)建。以下是配置步驟:
步驟 1: 安裝 Gitee 插件
? 同樣在Jenkins的插件管理中,搜索Gitee并安裝該插件。
步驟 2: 獲取 Gitee API Token
? 登錄到Gitee賬戶(hù),點(diǎn)擊鏈接。
? 在“私人令牌”部分,點(diǎn)擊“生成新的令牌”。
? 根據(jù)需要選擇令牌的權(quán)限,例如“repo”(代碼倉(cāng)庫(kù)相關(guān)操作)和“user_info”(用戶(hù)信息查看)。
? 生成令牌后,復(fù)制并保存。

在這里插入圖片描述
步驟 3: 添加 Gitee配置
? 在“系統(tǒng)配置”頁(yè)面,找到Gitee 配置。
? 配置你的Gitee倉(cāng)庫(kù)信息:
?鏈接名: 輸入你的Gitee倉(cāng)庫(kù)的URL(HTTPS)。
?Gitee域名URL: 輸入Gitee域名完整URL地址。
?證書(shū)令牌: 選擇Gitee API令牌。

在這里插入圖片描述
步驟 4: 添加憑據(jù)
? 在Gitee配置頁(yè)面 -> 點(diǎn)擊添加Jenkins。
? 在彈出的對(duì)話(huà)框中選擇“Gitee API令牌”,在“Gitee APIV5私人令牌”字段中粘貼你剛剛生成的API Token。
? 為該憑據(jù)提供一個(gè)名稱(chēng),并點(diǎn)擊“添加”保存。

在這里插入圖片描述
通過(guò)上述步驟,就已經(jīng)在Jenkins中完成了Publish Over SSH和Gitee的配置。這些配置使得Jenkins能夠安全地將構(gòu)建產(chǎn)物部署到遠(yuǎn)程服務(wù)器,同時(shí)自動(dòng)拉取和構(gòu)建Gitee上的代碼,為CI/CD流程提供了基礎(chǔ)支持。
7.構(gòu)建項(xiàng)目
在Jenkins中新建一個(gè)Maven項(xiàng)目的步驟如下:
1.登錄Jenkins控制臺(tái)
首先,訪(fǎng)問(wèn)Jenkins的Web界面,使用你的管理員賬戶(hù)登錄。
2.新建項(xiàng)目
? 在Jenkins首頁(yè),點(diǎn)擊左側(cè)菜單中的“新建任務(wù)”或“New Item”。
? 在彈出的窗口中,為項(xiàng)目輸入一個(gè)名稱(chēng),然后選擇“構(gòu)建一個(gè)Maven項(xiàng)目”或“Maven Project”。
? 點(diǎn)擊“確定”進(jìn)入項(xiàng)目配置頁(yè)面。
3.配置源碼管理(Source Code Management, SCM)
? 在項(xiàng)目配置頁(yè)面,找到“源碼管理”部分。
? 選擇你使用的版本控制系統(tǒng)(如Git),并輸入項(xiàng)目的代碼倉(cāng)庫(kù)URL。
? 如果倉(cāng)庫(kù)需要認(rèn)證,配置相應(yīng)的憑證(Credentials),如用戶(hù)名和密碼或SSH密鑰。
? 設(shè)置倉(cāng)庫(kù)中觸發(fā)構(gòu)建的分支代碼(*/release表示release分支有代碼提交則自動(dòng)觸發(fā)構(gòu)建)。

在這里插入圖片描述
4.構(gòu)建觸發(fā)器
? 配置構(gòu)建觸發(fā)器,這可以是輪詢(xún)SCM(Poll SCM)、Webhook觸發(fā)、定時(shí)構(gòu)建等。
? 例如,如果你希望在每次代碼提交時(shí)觸發(fā)構(gòu)建,可以選擇“GitHub hook trigger for GITScm polling”或“Poll SCM”,并設(shè)置合適的時(shí)間間隔。

在這里插入圖片描述
5.Gitee中配置WebHook
在Gitee中配置WebHook時(shí),首先進(jìn)入倉(cāng)庫(kù)的“管理”頁(yè)面,選擇“Webhooks”并添加新WebHook。在請(qǐng)求URL中輸入Jenkins的WebHook地址(如),選擇觸發(fā)事件(如推送事件),然后保存配置。這樣,每當(dāng)代碼提交時(shí),Gitee將自動(dòng)通知Jenkins觸發(fā)相應(yīng)的構(gòu)建任務(wù)。

在這里插入圖片描述
上圖中所需的URL將在設(shè)置Jenkins的Webhook觸發(fā)器時(shí)指定,這個(gè)URL用于接收外部觸發(fā)信號(hào)以啟動(dòng)構(gòu)建流程。由于 Jenkins 是要登錄之后才可以操作的,處于公網(wǎng)的 Jenkins 我們也不能降至設(shè)置為匿名訪(fǎng)問(wèn),所以這里我們將 Jenkins 的用戶(hù)名密碼放在請(qǐng)求地址中,最終地址類(lèi)似這樣:http://username:password@IP:8088/xxxx。**而Jenkins系統(tǒng)中生成的URL是不包含用戶(hù)名和密碼的,需要你自己手動(dòng)添加!**
此外,為了安全起見(jiàn),Jenkins系統(tǒng)會(huì)自動(dòng)生成一個(gè)密碼或密鑰,用于驗(yàn)證Webhook請(qǐng)求的有效性,確保只有授權(quán)方能觸發(fā)構(gòu)建任務(wù)。

在這里插入圖片描述 對(duì)應(yīng)的URL和密碼輸入并新建WebHook即可,注意,因?yàn)镚itee中的bug,就算配置成功了,測(cè)試WebHook也會(huì)出現(xiàn)404錯(cuò)誤。因此如果測(cè)試出現(xiàn)404錯(cuò)誤不要著急,可以嘗試構(gòu)建項(xiàng)目看看效果再來(lái)確定問(wèn)題!

在這里插入圖片描述
6.構(gòu)建設(shè)置
? 在“構(gòu)建”部分,你需要輸入Maven構(gòu)建的根POM文件的路徑,通常是pom.xml。
? 在“Goals and options”中,輸入你希望執(zhí)行的Maven命令,如clean install或package,根據(jù)項(xiàng)目需求選擇合適的構(gòu)建目標(biāo)。

在這里插入圖片描述
7.構(gòu)建后操作(Post Steps)
? 你可以在“構(gòu)建后操作”部分添加一些后續(xù)步驟,如“發(fā)送郵件通知”或“部署到服務(wù)器”。
? 如果你使用Publish Over SSH插件,可以配置將構(gòu)建產(chǎn)物上傳到遠(yuǎn)程服務(wù)器的步驟。

在這里插入圖片描述
此外,這里還需要上傳并執(zhí)行構(gòu)建后的deploy.sh腳本文件,具體腳本如下所示:
# 設(shè)置jdk路徑 exportJAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64 exportPATH=$JAVA_HOME/bin:$PATH # 設(shè)置jar路徑和文件名 JAR_PATH=/root/deploy_data JARFILE=webserver-1.0.0-SNAPSHOT.jar # kill掉正在運(yùn)行的java進(jìn)程 ps -ef | grep$JARFILE| grep -v grep | awk'{print $2}'| xargskill-9 # 開(kāi)啟一個(gè)新的java進(jìn)程 nohupjava -jar -Xms512m -Xmx1024m$JAR_PATH/$JARFILE> out.log 2>&1 & if[ $? -eq 0 ];then sleep30 tail-n 50 out.log fi
這個(gè)腳本文件需要根據(jù)服務(wù)器中jdk的路徑以及jar的路徑和名稱(chēng)進(jìn)行修改!
8.保存配置并構(gòu)建
? 配置完成后,點(diǎn)擊頁(yè)面底部的“保存”或“應(yīng)用”按鈕。
? 返回項(xiàng)目主頁(yè),點(diǎn)擊“立即構(gòu)建”或“Build Now”按鈕,啟動(dòng)第一次構(gòu)建。

在這里插入圖片描述
9.查看構(gòu)建結(jié)果
? 構(gòu)建過(guò)程會(huì)在Jenkins的控制臺(tái)輸出中顯示,你可以點(diǎn)擊項(xiàng)目主頁(yè)左側(cè)的“控制臺(tái)輸出”查看構(gòu)建日志。
? 如果構(gòu)建成功,Jenkins會(huì)顯示一個(gè)綠色的“成功”標(biāo)記,如果失敗,則顯示紅色“失敗”標(biāo)記。

在這里插入圖片描述
通過(guò)以上步驟,你就可以在Jenkins中成功新建并配置一個(gè)Maven項(xiàng)目,實(shí)現(xiàn)自動(dòng)化構(gòu)建。
-
軟件
+關(guān)注
關(guān)注
69文章
5364瀏覽量
91957 -
自動(dòng)化
+關(guān)注
關(guān)注
31文章
5989瀏覽量
90699 -
源代碼
+關(guān)注
關(guān)注
96文章
2953瀏覽量
70703 -
jenkins
+關(guān)注
關(guān)注
0文章
34瀏覽量
5517
原文標(biāo)題:掌握J(rèn)enkins自動(dòng)化部署:從代碼提交到自動(dòng)上線(xiàn)的全流程揭秘
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
一文讀懂自動(dòng)化是什么?
jenkins有什么用_jenkins如何自動(dòng)部署
云平臺(tái)的自動(dòng)化部署設(shè)計(jì)與實(shí)現(xiàn)
Jenkins+docker+springboot一鍵自動(dòng)部署項(xiàng)目
Jenkins+Docker一鍵自動(dòng)化部署SpringBoot最簡(jiǎn)流程
Jenkins+Docker一鍵自動(dòng)化部署SpringBoot項(xiàng)目
Jenkins+Docker實(shí)現(xiàn)一鍵自動(dòng)化部署項(xiàng)目!
關(guān)于Jenkins+docker+springboot一鍵自動(dòng)部署項(xiàng)目
Jenkins+Docker一鍵自動(dòng)化部署SpringBoot應(yīng)用最精簡(jiǎn)流程
基于Jenkins+GitLab+Maven實(shí)現(xiàn)代碼自動(dòng)打包編譯發(fā)布
使用Jenkins和單個(gè)模板部署多個(gè)Kubernetes組件
Flexus X 實(shí)例 Docker+Jenkins+gitee 實(shí)現(xiàn) CICD 自動(dòng)化部署 - 解放你的雙手~
Jenkins 與 SonarQube 集成部署,自動(dòng)化代碼質(zhì)量監(jiān)控
基于 Docker 與 Jenkins 實(shí)現(xiàn)自動(dòng)化部署
一文掌握J(rèn)enkins自動(dòng)化部署
評(píng)論