Jenkins 完全指南:從 CI/CD 核心概念到實戰(zhàn)安裝與配置
本文系統(tǒng)介紹了 Jenkins 這一強大的開源 CI/CD 工具,涵蓋其核心架構、分布式特性、主要功能與典型應用場景。深入解析持續(xù)集成(CI)與持續(xù)交付/部署(CD)的區(qū)別與價值,并提供詳細的 Windows 和 Linux 系統(tǒng)安裝教程及初始配置指南。無論你是初學者還是希望深化理解的開發(fā)者,都能通過本文學會如何快速搭建和配置 Jenkins,助力團隊實現自動化構建、測試與部署,提升軟件交付效率與質量。
一、Jenkins 簡介
Jenkins 是一個開源的持續(xù)集成和持續(xù)交付(CI/CD)工具,用于自動化軟件開發(fā)過程中的構建、測試和部署階段。
1. Jenkins 基礎架構圖
圖片
2. 分布式架構圖
圖片
3. 主要特點
- 開源免費:Jenkins 是 MIT 許可證下的開源軟件
- 跨平臺:支持 Windows、Linux 和 macOS
- 可擴展:擁有超過 1800 個插件生態(tài)系統(tǒng)
- 分布式:支持主從架構,可跨多臺機器分發(fā)工作負載
- 易于安裝:提供原生安裝包、Docker 鏡像和 WAR 文件部署方式
4. 核心功能
- 持續(xù)集成:自動構建和測試代碼變更
- 持續(xù)交付:自動化部署到各種環(huán)境
- 流水線:通過 Groovy 腳本定義復雜的構建流程
- 監(jiān)控:提供構建結果和趨勢的可視化
- 集成:與 Git、SVN、Maven、Docker 等眾多工具集成
5. 典型應用場景
- 自動化構建和測試軟件項目
- 定期執(zhí)行靜態(tài)代碼分析
- 部署應用到測試/生產環(huán)境
- 執(zhí)行自動化回歸測試套件
- 生成報告和指標
二、CI/CD 介紹
1. CI - 持續(xù)集成 (Continuous Integration)
1.1. 是什么?
持續(xù)集成是一種軟件開發(fā)實踐,要求開發(fā)人員頻繁地(一天多次)將代碼變更合并到共享的主干分支(如 main 或 trunk)中。每次合并后,會自動觸發(fā)一系列自動化構建和測試流程,以盡快發(fā)現集成錯誤。
1.2. 核心目標:
- 快速發(fā)現錯誤:在代碼提交后幾分鐘內就能得到反饋,定位問題成本極低。
- 降低集成風險:避免在項目后期進行“大爆炸”式的合并,減少沖突和不可預測性。
- 保證軟件質量:確保任何時刻的主干代碼都是可工作的、高質量的。
1.3. 關鍵實踐與流程:
圖片
2. CD - 持續(xù)交付 (Continuous Delivery) 與 持續(xù)部署 (Continuous Deployment)
CD 有兩種非常接近但又關鍵區(qū)別的含義:
2.1. 持續(xù)交付 (Continuous Delivery)
- 是什么? 是持續(xù)集成的延伸。它確保軟件在通過CI流程后,能夠以一種隨時可可靠、快速地手動部署到生產環(huán)境的狀態(tài)。
- 核心目標: 讓軟件的發(fā)布過程變得低風險、可預測、一鍵式。部署的決策權在人(點擊一個按鈕)。
- 關鍵實踐: 在CI的基礎上,增加自動化部署到類生產環(huán)境(Staging) 、進行集成測試、壓力測試等更復雜的測試,并準備好一鍵部署到生產的腳本。
2.2. 持續(xù)部署 (Continuous Deployment)
- 是什么? 是持續(xù)交付的更高階形態(tài)。它要求所有通過CI流程的代碼變更自動地、無需人工干預地部署到生產環(huán)境。
- 核心目標: 完全自動化從代碼提交到功能上線的整個流程,實現最快的反饋閉環(huán)。
- 關鍵實踐: 在持續(xù)交付的基礎上,省略了“手動點擊部署”的步驟,代之以一個自動的、信心極強的發(fā)布流水線。這需要極其完善的自動化測試和監(jiān)控體系作為保障。
2.3. CD 流程圖示
圖片
2.4. CI/CD 的關系與總結
你可以將它們理解為一個自動化流水線的不同階段:
- CI (持續(xù)集成) :關注的是代碼集成和構建測試的自動化,解決的是“開發(fā)階段”的質量問題。輸出的是一個可信的、可部署的軟件包。
- CD (持續(xù)交付/持續(xù)部署) :關注的是軟件發(fā)布和部署的自動化,解決的是“交付階段”的效率問題。它接收CI產出的軟件包,并將其安全、快速地交付給用戶。
特性 | 持續(xù)集成 (CI) | 持續(xù)交付 (CD Delivery) | 持續(xù)部署 (CD Deployment) |
核心關注點 | 代碼合并與驗證 | 可靠 的發(fā)布準備 | 自動 的發(fā)布過程 |
流程終點 | 生成可部署的制品 | 預發(fā)布環(huán)境,等待手動批準 | 生產環(huán)境 |
人工干預 | 無(全自動) | 需要 手動觸發(fā)部署 | 無需 人工干預(全自動) |
比喻 | 工廠的質檢線 :確保每個零件合格 | 包裝好的商品已裝上貨車 ,隨時可以發(fā)往商店 | 商品自動上架 :貨車一到,機器人就擺上貨架 |
2.5. 核心價值:
- 更快地交付價值:新功能、修復能更快地到達用戶手中。
- 更高的軟件質量:自動化測試捕獲了大多數缺陷。
- 降低發(fā)布風險:小批量的變更使得回滾更容易,問題更易定位。
- 減輕團隊壓力:自動化代替了繁瑣重復的手工操作。
Jenkins 這類工具就是實現這條自動化流水線(CI/CD Pipeline)的引擎,它將CI和CD的各個環(huán)節(jié)串聯起來,形成一個完整、可視化的自動化流程。
三、Jenkins安裝
1. Windows 系統(tǒng)安裝 Jenkins
方法1:使用安裝程序(推薦)
- 下載安裝包:
- 訪問 Jenkins 官網
- 下載 Windows 版本的安裝程序 (
.msi文件)
- 運行安裝程序:
- 雙擊下載的
.msi文件 - 按照向導完成安裝(默認選項通常即可)
- 安裝完成后:
- Jenkins 會作為服務自動啟動
- 打開瀏覽器訪問
http://localhost:8080 - 按照屏幕提示完成初始設置
方法2:使用 Java WAR 文件
- 確保已安裝 Java 8 或 11
java -version- 下載 Jenkins WAR 文件
curl -L -o jenkins.war https://get.jenkins.io/war-stable/latest/jenkins.war- 啟動 Jenkins
java -jar jenkins.war2. Linux 系統(tǒng)安裝 Jenkins
2.1 Ubuntu/Debian 系統(tǒng)
- 安裝依賴:
sudo apt update
sudo apt install openjdk-11-jdk- 添加 Jenkins 倉庫:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null- 安裝 Jenkins:
sudo apt update
sudo apt install jenkins- 啟動 Jenkins:
sudo systemctl start jenkins
sudo systemctl enable jenkins- 訪問 Jenkins:
打開瀏覽器訪問 http://your-server-ip:8080
初始管理員密碼在:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword2.2 CentOS/RHEL 系統(tǒng)
- 安裝依賴:
sudo yum install java-11-openjdk-devel- 添加 Jenkins 倉庫:
sudo wget -O /etc/yum.repos.d/jenkins.repo \
https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key- 安裝 Jenkins:
sudo yum install jenkins- 啟動 Jenkins:
sudo systemctl start jenkins
sudo systemctl enable jenkins- 訪問 Jenkins:
打開瀏覽器訪問 http://your-server-ip:8080
初始管理員密碼在:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword3. 安裝后配置
第一步:解鎖 Jenkins
當你首次訪問 Jenkins(通常是 http://你的服務器IP:8080)時,會看到這個頁面。
圖片
詳細說明和注意事項:
- 密碼文件位置:
- Linux (Debian/Ubuntu/CentOS):
/var/lib/jenkins/secrets/initialAdminPassword - Windows:
C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword - Mac:
/Users/共享/Jenkins/Home/secrets/initialAdminPassword - Docker: 密碼會直接打印在容器日志中 (
docker logs <container-name>)。
- 如何查看:
- Linux:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword - Windows (PowerShell):
type "C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword" - Windows (CMD):
type "C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword" - 在服務器上打開終端或命令行。
- 使用
cat或type命令查看文件內容,務必完整復制。
- 安全提示:
- 這個密碼是一次性的,僅用于初始解鎖。
- 解鎖后,Jenkins 會引導你創(chuàng)建新的永久性管理員用戶,此后將不再需要此初始密碼。
- 如果丟失了此文件或無法訪問,最簡單的解決方法是重新安裝 Jenkins。
第二步:安裝插件
圖片
詳細說明和選項分析:
- 安裝推薦插件:
- Git 集成:從 Git 倉庫拉取代碼。
- Pipeline:定義和運行流水線任務。
- SSH Agent:管理 SSH 憑據。
- Mailer:發(fā)送構建通知郵件。
- 各種 UI 和工具集成插件。
- 這是給新手的推薦選項。
- 它會安裝一套經過篩選的、最常用的插件,包括:
- 選擇此選項后,你會看到一個進度條,Jenkins 會自動下載并安裝所有插件。安裝過程可能需要幾分鐘,取決于你的網絡速度。
- 選擇插件來安裝:
- 適合高級用戶,或者你清楚知道自己需要什么。
- 你會看到一個分類的插件列表,可以手動勾選。
- 如果你不確定,強烈建議先安裝“推薦插件” ,以后隨時可以在
管理Jenkins -> 插件管理中安裝或卸載其他插件。
- 如果安裝失?。?/li>
- 很常見,通常是由于網絡超時或鏡像源問題。
- 不要擔心,點擊
重試按鈕即可。Jenkins 會重新嘗試安裝失敗的插件。 - 如果多次重試后仍有少數插件失敗,可以先跳過,后續(xù)在插件管理中單獨安裝。
第三步:創(chuàng)建第一個管理員用戶
插件安裝完成后,會跳轉到“創(chuàng)建第一個管理員用戶”頁面。
為什么要創(chuàng)建?初始密碼復雜且不安全,創(chuàng)建專屬的管理員賬戶是保護 Jenkins 實例的第一步。
需要填寫的信息:
- 用戶名:你的管理員賬號名(例如
admin,yourname)。 - 密碼:設置一個強密碼并確認。
- 確認密碼:再次輸入密碼。
- 全名:(可選)用戶的全名。
- 電子郵件地址:(重要)用于接收系統(tǒng)通知和構建結果。
重要建議:
- 務必牢記此用戶名和密碼,這是你后續(xù)登錄和管理 Jenkins 的憑證。
- 如果你只是想先試用一下,也可以點擊右下角的
使用 admin 賬戶繼續(xù)鏈接,并跳過這一步。但生產環(huán)境強烈不建議這樣做。
第四步:配置實例 URL
這是最后一步,界面標題通常是“實例配置”。
這是什么?這是 Jenkins 用于生成鏈接的根 URL。例如,當它給你發(fā)送一封構建失敗的郵件時,郵件中的鏈接就會基于這個 URL 生成。
如何配置:
- 默認值:Jenkins 會自動檢測并填寫一個值,通常是
http://你的服務器IP或主機名:8080。 - 何時需要修改:
使用域名:如果你希望通過域名(如 https://jenkins.your-company.com)訪問,而不是 IP 地址。
使用反向代理:如果你在 Jenkins 前面使用了 Nginx 或 Apache 做代理和 SSL 加密。
端口變更:如果你將來修改了 Jenkins 的監(jiān)聽端口。
對于初次安裝:
- 如果你只是在本地測試(
localhost),直接接受默認值并點擊保存并完成即可。 - 這個設置以后隨時可以在
管理Jenkins -> 系統(tǒng)配置中的Jenkins URL字段中修改。


































