

掌握Jenkins自動化部署:從程式碼提交到自動上線的全流程揭秘
1.Jenkins工作流程
1. 原始碼管理(SCM)輪詢或Webhooks觸發
-
• SCM輪詢:Jenkins會定期檢查(輪詢)配置的原始碼管理系統(如Git、SVN等)的倉庫,看是否有新的提交或程式碼更改。如果檢測到變化,就會觸發構建任務。這種方法需要Jenkins定時訪問程式碼庫,可能會有一定的延遲。 -
• Webhooks:相比之下,Webhooks是一種更為即時的觸發方式。開發者提交程式碼後,原始碼管理系統會立即向Jenkins傳送一個HTTP請求(Webhook),通知Jenkins有新提交。這使得Jenkins能夠更快響應程式碼變化,立即啟動構建過程。
2. 觸發構建任務
3. 流水線(Pipeline)階段
-
• Checkout程式碼:Jenkins從原始碼管理系統中將最新的程式碼拉取到構建節點上。這一步通常使用外掛(如Git外掛)來與程式碼庫互動。 -
• 構建(Build):Jenkins根據配置的構建工具(如Maven、Gradle)對程式碼進行編譯、打包。在這一步,程式碼會被轉化為可執行的應用程式包(如JAR、WAR檔案)或Docker映象。 -
• 測試(Test):Jenkins會執行自動化測試指令碼,包括單元測試、整合測試、功能測試等。這一步至關重要,因為它確保程式碼在引入新變更後仍然是穩定和可靠的。 -
• 程式碼質量分析(Optional):Jenkins可以執行程式碼質量檢查,使用工具如SonarQube來分析程式碼的複雜度、安全性和可維護性,並生成報告。 -
• 部署(Deploy):當所有前面的步驟都成功完成後,Jenkins會執行部署階段。根據配置,它可以將構建產物部署到不同的環境,如開發環境、測試環境或生產環境。這一步可以透過SSH、FTP、容器化部署(Docker、Kubernetes)或雲服務API來實現。
4. 工作節點(Agent)與主節點(Master)協作
5. Jenkinsfile(流水線指令碼)
6. 通知與反饋
7. 持續整合與持續交付/部署(CI/CD)

2.搭建Jenkins
1.建立一個數據目錄
# 建立 jenkins 目錄mkdir /data/jenkins_home/# 修改目錄的所有者,以便於 Jenkins 容器能夠操作該目錄chown -R 1000:1000 /data/jenkins_home/
2.拉取jenkins映象
docker pull jenkins/jenkins:lts
3.啟動jenkins容器
docker run -d --name jenkins -p 8088:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
4.訪問Jenkins
首次訪問時,系統會要求你輸入初始管理員密碼。

5.獲取管理員密碼
可以直接去宿主機的 /data/jenkins_home/secrets/initialAdminPassword 位置檢視初始化密碼,具體如下所示:(這裡的/data/jenkins_home/是前面你自己設定的Jenkins工作目錄)。

獲取管理員密碼之後就可以直接使用admin賬戶進行登入,登入之後的介面如下所示:

3.安裝Maven
-
1. 下載Maven訪問Maven官方下載頁面,選擇需要的版本,複製下載連結。使用 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
目錄:sudo tar -zxvf apache-maven-3.8.8-bin.tar.gz -C /opt
-
3. 配置環境變數為了方便使用Maven,需要配置環境變數。編輯 /etc/profile
檔案:sudo vi /etc/profile
在檔案末尾新增以下內容:
export M2_HOME=/opt/apache-maven-3.8.8export PATH=$M2_HOME/bin:$PATH
-
4. 使環境變數生效儲存檔案並退出編輯器,然後使環境變數生效: source /etc/profile
-
5. 驗證安裝現在可以透過以下命令驗證Maven是否安裝成功: mvn -version
如果安裝成功,你將看到Maven的版本資訊。
在這裡插入圖片描述
4.安裝外掛
1. Gitee
-
• 功能:Gitee外掛允許Jenkins與Gitee程式碼倉庫整合,支援從Gitee倉庫中拉取程式碼、觸發構建任務。這對於使用Gitee進行原始碼管理的團隊非常有用,能簡化CI/CD流程。 -
• 安裝:在“外掛管理”介面,搜尋“Gitee”外掛並安裝。安裝後,可以在Jenkins的專案配置中新增Gitee倉庫的訪問資訊,配置Webhook以便程式碼提交時自動觸發構建。
2. Maven Integration
-
• 功能:Maven Integration外掛允許Jenkins與Maven無縫整合,使得Jenkins可以直接呼叫Maven進行專案的構建、測試和打包。這對於Java專案尤其重要,因為Maven能夠自動管理專案依賴、編譯程式碼,並生成可部署的包(如JAR、WAR)。 -
• 安裝:在Jenkins管理介面中,導航到“外掛管理” -> “可選外掛”,搜尋“Maven Integration”並點選“安裝”。
3. Publish Over SSH
-
• 功能:Publish Over SSH外掛允許Jenkins透過SSH將構建生成的檔案(如JAR、WAR包)安全地傳輸到遠端伺服器上。這對於部署過程至關重要,尤其是當需要將構建產物自動部署到生產或測試伺服器時。 -
• 安裝:同樣在“外掛管理”介面,搜尋“Publish Over SSH”並安裝。安裝後,你可以在“系統管理”中配置SSH伺服器的連線資訊。
具體的安裝步驟如下所示:點選左邊的系統管理,然後選擇右邊的外掛管理,進行配置。

之後在可選外掛中,搜尋 Maven Integration 和 Publish Over SSH 以及 Gitee 三個外掛安裝即可:

docker restart jenkins
5.全域性工具配置
在使用Jenkins進行自動化部署之前,進行一些全域性工具的配置是必要的,這樣可以確保Jenkins能夠正確呼叫這些工具來完成構建、測試和部署任務。

1. JDK(Java Development Kit)
-
• 為什麼需要:Jenkins本身是基於Java的應用,並且許多構建工具(如Maven、Gradle)也依賴JDK。因此,配置JDK是必不可少的。 -
• 配置方法:在Jenkins的“系統管理” -> “全域性工具配置”中,找到JDK配置部分,點選“新增JDK”,指定JDK的安裝路徑,或者選擇自動安裝。
2. Maven
-
• 為什麼需要:Maven是Java專案構建的標準工具,用於依賴管理、程式碼編譯、測試和打包。透過配置Maven,Jenkins可以呼叫Maven進行專案構建。 -
• 配置方法:在“全域性工具配置”中找到Maven配置部分,點選“新增Maven”,指定Maven的安裝路徑,或者選擇自動安裝。 在這裡插入圖片描述
3. Git
-
• 為什麼需要:大多數專案都使用Git進行原始碼管理。透過配置Git,Jenkins可以從Git倉庫中拉取程式碼並進行構建。 -
• 配置方法:在“全域性工具配置”中找到Git配置部分,新增Git安裝路徑,或者選擇自動安裝。確保Jenkins可以訪問正確版本的Git(由於 Jenkins 容器中已經存在 git 了,所以這裡不需要額外安裝 git,預設即可)。 在這裡插入圖片描述
4. Gradle(可選)
-
• 為什麼需要:對於使用Gradle構建的專案,配置Gradle工具是必要的。Gradle是另一個流行的構建工具,尤其在Android開發中被廣泛使用。 -
• 配置方法:在“全域性工具配置”中,找到Gradle配置部分,點選“新增Gradle”,指定Gradle的安裝路徑或選擇自動安裝。
6.系統配置
Publish Over SSH
和 Gitee
的配置是實現程式碼部署和與程式碼倉庫整合的關鍵步驟。以下是詳細的配置步驟介紹:1. Publish Over SSH 配置
Publish Over SSH
外掛允許Jenkins透過SSH將構建生成的檔案(如JAR、WAR包)安全地傳輸到遠端伺服器上。以下是配置步驟:步驟 1: 安裝 Publish Over SSH 外掛
-
• 如果前面已經安裝請忽略步驟1 -
• 登入Jenkins的管理介面。 -
• 在Jenkins首頁,點選左側選單中的“系統管理”或“Manage Jenkins”。 -
• 在管理頁面中,選擇“外掛管理”或“Manage Plugins”。 -
• 在“可選外掛”或“Available Plugins”選項卡中,搜尋 Publish Over SSH
。 -
• 勾選外掛並點選“安裝”,等待外掛安裝完成。
步驟 2: 配置 SSH 伺服器
-
• 外掛安裝完成後,返回“系統管理”頁面,選擇“系統配置”或“Configure System”。 -
• 向下滾動頁面,找到 Publish Over SSH
部分。 -
• 點選“新增”按鈕,配置一個新的SSH伺服器: -
• Name: 為伺服器配置一個易記的名稱。 -
• Hostname: 輸入目標伺服器的IP地址或主機名。 -
• Username: 輸入用於登入到目標伺服器的使用者名稱。 -
• Remote Directory: 指定在遠端伺服器上的預設目錄,Jenkins將把構建產物傳輸到此目錄。 -
• Use password authentication, or use a different key: 選擇是使用密碼認證,還是提供私鑰檔案進行認證。 -
• 如果使用金鑰認證,配置私鑰檔案路徑或直接貼上私鑰內容。 -
• 點選“測試配置”或“Test Configuration”按鈕,驗證Jenkins是否能夠成功連線到目標伺服器。 在這裡插入圖片描述
步驟 3: 儲存配置
-
• 配置完成後,點選頁面底部的“儲存”或“應用”按鈕,以確保你的設定被儲存。
2. Gitee 配置
步驟 1: 安裝 Gitee 外掛
-
• 同樣在Jenkins的外掛管理中,搜尋 Gitee
並安裝該外掛。
步驟 2: 獲取 Gitee API Token
-
• 登入到Gitee賬戶,點選連結。 -
• 在“私人令牌”部分,點選“生成新的令牌”。 -
• 根據需要選擇令牌的許可權,例如“repo”(程式碼倉庫相關操作)和“user_info”(使用者資訊檢視)。 -
• 生成令牌後,複製並儲存。 在這裡插入圖片描述
步驟 3: 新增 Gitee配置
-
• 在“系統配置”頁面,找到Gitee 配置。 -
• 配置你的Gitee倉庫資訊: -
• 連結名: 輸入你的Gitee倉庫的URL(HTTPS)。 -
• Gitee域名URL: 輸入Gitee域名完整URL地址。 -
• 證書令牌: 選擇Gitee API令牌。 在這裡插入圖片描述
步驟 4: 新增憑據
-
• 在Gitee配置頁面 -> 點選新增Jenkins。 -
• 在彈出的對話方塊中選擇“Gitee API令牌”,在“Gitee APIV5私人令牌”欄位中貼上你剛剛生成的API Token。 -
• 為該憑據提供一個名稱,並點選“新增”儲存。 在這裡插入圖片描述 透過上述步驟,就已經在Jenkins中完成了
Publish Over SSH
和Gitee
的配置。這些配置使得Jenkins能夠安全地將構建產物部署到遠端伺服器,同時自動拉取和構建Gitee上的程式碼,為CI/CD流程提供了基礎支援。
7.構建專案
1. 登入Jenkins控制檯
2. 新建專案
-
• 在Jenkins首頁,點選左側選單中的“新建任務”或“New Item”。 -
• 在彈出的視窗中,為專案輸入一個名稱,然後選擇“構建一個Maven專案”或“Maven Project”。 -
• 點選“確定”進入專案配置頁面。
3. 配置原始碼管理(Source Code Management, SCM)
-
• 在專案配置頁面,找到“原始碼管理”部分。 -
• 選擇你使用的版本控制系統(如Git),並輸入專案的程式碼倉庫URL。 -
• 如果倉庫需要認證,配置相應的憑證(Credentials),如使用者名稱和密碼或SSH金鑰。 -
• 設定倉庫中觸發構建的分支程式碼(*/release表示release分支有程式碼提交則自動觸發構建)。 在這裡插入圖片描述
4. 構建觸發器
-
• 配置構建觸發器,這可以是輪詢SCM(Poll SCM)、Webhook觸發、定時構建等。 -
• 例如,如果你希望在每次程式碼提交時觸發構建,可以選擇“GitHub hook trigger for GITScm polling”或“Poll SCM”,並設定合適的時間間隔。 在這裡插入圖片描述
5.Gitee中配置WebHook
在Gitee中配置WebHook時,首先進入倉庫的“管理”頁面,選擇“Webhooks”並新增新WebHook。在請求URL中輸入Jenkins的WebHook地址(如),選擇觸發事件(如推送事件),然後儲存配置。這樣,每當程式碼提交時,Gitee將自動通知Jenkins觸發相應的構建任務。

上圖中所需的URL將在設定Jenkins的Webhook觸發器時指定,這個URL用於接收外部觸發訊號以啟動構建流程。由於 Jenkins 是要登入之後才可以操作的,處於公網的 Jenkins 我們也不能降至設定為匿名訪問,所以這裡我們將 Jenkins 的使用者名稱密碼放在請求地址中,最終地址類似這樣:http://username:password@IP:8088/xxxx。**而Jenkins系統中生成的URL是不包含使用者名稱和密碼的,需要你自己手動新增!**此外,為了安全起見,Jenkins系統會自動生成一個密碼或金鑰,用於驗證Webhook請求的有效性,確保只有授權方能觸發構建任務。

對應的URL和密碼輸入並新建WebHook即可,注意,因為Gitee中的bug,就算配置成功了,測試WebHook也會出現404錯誤。因此如果測試出現404錯誤不要著急,可以嘗試構建專案看看效果再來確定問題!

6. 構建設定
-
• 在“構建”部分,你需要輸入Maven構建的根POM檔案的路徑,通常是 pom.xml
。 -
• 在“Goals and options”中,輸入你希望執行的Maven命令,如 clean install
或package
,根據專案需求選擇合適的構建目標。在這裡插入圖片描述
7. 構建後操作(Post Steps)
-
• 你可以在“構建後操作”部分新增一些後續步驟,如“傳送郵件通知”或“部署到伺服器”。 -
• 如果你使用Publish Over SSH外掛,可以配置將構建產物上傳到遠端伺服器的步驟。 在這裡插入圖片描述
# 設定jdk路徑export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64export PATH=$JAVA_HOME/bin:$PATH# 設定jar路徑和檔名JAR_PATH=/root/deploy_dataJARFILE=webserver-1.0.0-SNAPSHOT.jar# kill掉正在執行的java程序ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9# 開啟一個新的java程序nohup java -jar -Xms512m -Xmx1024m $JAR_PATH/$JARFILE > out.log 2>&1 &if [ $? -eq 0 ]; thensleep 30tail -n 50 out.logfi
8. 儲存配置並構建
-
• 配置完成後,點選頁面底部的“儲存”或“應用”按鈕。 -
• 返回專案主頁,點選“立即構建”或“Build Now”按鈕,啟動第一次構建。 在這裡插入圖片描述
9. 檢視構建結果
-
• 構建過程會在Jenkins的控制檯輸出中顯示,你可以點選專案主頁左側的“控制檯輸出”檢視構建日誌。 -
• 如果構建成功,Jenkins會顯示一個綠色的“成功”標記,如果失敗,則顯示紅色“失敗”標記。 在這裡插入圖片描述