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

































