目錄
一、前言簡介
二、核心價值與優勢
三、關鍵概念
四、下載安裝與配置
五、總結歸納概述
一、前言簡介
? ? ? ?Jenkins 是一個開源的、基于 Java 的自動化服務器。它的核心使命是實現持續集成和持續交付。簡單來說,Jenkins 是一個強大的工具,用于自動化軟件開發過程中那些重復性的、容易出錯的任務,示例如下:
- 構建:?編譯源代碼(如 Java、C++、Python)。
- 測試:?自動運行單元測試、集成測試等。
- 打包:?將代碼打包成可部署的格式(如 JAR、WAR、Docker 鏡像)。
- 部署:?將構建好的軟件包自動部署到測試環境、預生產環境或生產環境。
- 報告:?收集構建和測試結果,生成報告,通知相關人員。
二、核心價值與優勢
1. 持續集成:?每當開發人員將代碼更改提交到版本控制系統(如 Git、SVN),Jenkins 可以自動觸發一次構建和測試過程。這有助于盡早發現集成錯誤,提高軟件質量。
2. 持續交付/部署:?在 CI 的基礎上,進一步自動化部署流程,使得軟件能夠更快速、更可靠地發布到生產環境。
3. 自動化:?解放開發者手動執行繁瑣任務的時間,讓他們專注于更有價值的工作(如寫代碼、設計)。
4. 提高效率:?自動化流程大大縮短了從代碼提交到產品上線的周期。
5. 提高質量:?頻繁的自動化測試能快速捕獲缺陷,防止問題累積。
6. 可視化:?提供直觀的 Web 界面,展示構建歷史、測試結果、控制臺輸出等,方便監控和排查問題。
7. 可擴展性:?這是 Jenkins 的一大亮點。它擁有**極其龐大且活躍的插件生態系統**(超過 1800 個插件)。這些插件使得 Jenkins 能夠:
-
集成幾乎所有主流的版本控制系統(Git, SVN, Mercurial 等)。
-
支持各種構建工具(Maven, Gradle, Ant, Make, npm 等)。
-
與測試框架(JUnit, TestNG, Selenium 等)無縫協作。
-
部署到各種環境(物理機、虛擬機、容器如 Docker、Kubernetes,云平臺如 AWS、Azure、GCP)。
-
集成通知工具(郵件、Slack、Teams 等)。
-
支持各種項目類型(自由風格項目、Pipeline 等)。
8. 跨平臺:?基于 Java 開發,可以在任何支持 Java 的平臺上運行(Windows, Linux, macOS)。
9. 社區支持:?作為最老牌、最廣泛使用的 CI/CD 工具之一,擁有龐大且活躍的社區,提供豐富的文檔、教程和問題解答。
三、關鍵概念
-
作業:?Jenkins 中自動化任務的基本單位。一個作業定義了要執行的一系列步驟(如拉取代碼、編譯、測試、部署)。
-
構建:?執行一次作業的過程稱為一次構建。每次構建會產生結果(成功、失敗、不穩定)和日志。
-
節點/代理:?Jenkins 可以在主服務器上執行任務,也可以通過代理節點將任務分發到其他機器上執行,實現分布式構建。
-
Pipeline:?現代 Jenkins 的核心。使用代碼(通常是 Groovy 語法寫在 `Jenkinsfile` 中)來定義整個構建、測試和部署流程。Pipeline 將多個階段可視化地連接起來,提供了更強大、更靈活、更可維護的自動化能力。
-
插件:?擴展 Jenkins 功能的模塊。
四、下載安裝與配置
一、準備工作
? ?Jenkins 基于 Java,需提前安裝Java 11 或 17。
二、安裝 Jenkins
Windows 系統
1. 下載安裝包:官網下載:https://www.jenkins.io/download/](https://www.jenkins.io/download/?→ 選擇 Windows?版本。
2. 運行安裝程序:雙擊 `.msi` 文件,按向導安裝(建議保持默認路徑)。
3. 啟動服務:安裝完成后自動啟動 Jenkins 服務,訪問 `http://localhost:8080`。
Linux 系統(Ubuntu/CentOS)
方法1:通過官方倉庫安裝(推薦)
# Ubuntu/Debian
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.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
sudo apt update
sudo apt install jenkins
# CentOS/RHEL
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-2023.key
sudo yum install jenkins
方法2:直接運行 WAR 包(通用)
# 下載最新 WAR 包
wget https://get.jenkins.io/war-stable/latest/jenkins.war# 運行(默認端口 8080)
java -jar jenkins.war --httpPort=9090 ?# 可自定義端口
啟動服務 & 設置開機自啟
sudo systemctl start jenkins
sudo systemctl enable jenkins ?# 開機自啟
macOS 系統
# 通過 Homebrew 安裝
brew install jenkins-lts# 啟動服務
brew services start jenkins-lts
三、初始配置 Jenkins
1. 解鎖 Jenkins訪問 `http://localhost:8080`(或自定義端口) ?從日志獲取初始密碼:
Linux:見下
?
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Windows:在安裝目錄的 `secrets/initialAdminPassword` 文件中查找。
2. 安裝推薦插件:選擇 **Install suggested plugins**(安裝官方推薦插件集)。
3. 創建管理員賬戶:設置用戶名、密碼和郵箱(勿跳過!)。
4. 配置實例 URL:保持默認 `http://localhost:8080` 或按需修改。
四、基礎安全配置
1. 開啟全局安全??
-
進入 Manage Jenkins > Security??
-
勾選 Enable security?→ 選擇 Logged-in users can do anything
2. 配置代理(可選)?
-
? ?若需訪問外網下載插件:Manage Jenkins > Plugins > Advanced → 設置 HTTP 代理。
五、安裝必備插件
進入 Manage Jenkins > Plugins > Available plugins?搜索安裝:
插件名稱 | 作用 |
---|---|
Git | 集成 Git 版本控制 |
Pipeline | 核心流水線功能 |
Docker | 構建/推送 Docker 鏡像 |
Blue Ocean | 現代化可視化流水線界面 |
Credentials | 管理密鑰(如 GitHub Token) |
六、驗證安裝
1. 創建測試任務: ?
? ?- 首頁點擊 New Item?→ 選擇 Freestyle project?→ 在構建步驟添加 `echo "Hello Jenkins!"` ?
? ?- 點擊 Build Now,查看控制臺輸出是否成功。
常見問題解決
1. 端口沖突: ?
? ?- 修改端口:編輯 `/etc/default/jenkins`(Linux)或 Windows 服務配置,更新 `HTTP_PORT=新端口`。2. 插件安裝失敗: ?
? ?- 更換更新中心鏡像: ?
? ? ?Manage Jenkins > Plugin Manager > Advanced** → 將 `Update Site` URL 替換為清華鏡像: ?
? ? ?https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json3. Java 版本不兼容: ?
? ?- 確保使用 Java 11/17!
下一步建議
創建第一個 Pipeline:在項目根目錄添加 `Jenkinsfile`,用代碼定義構建流程。 ?
集成 Git 倉庫:配置 Webhook 實現提交代碼自動觸發構建。 ?
配置從節點(Agent):擴展構建能力至多臺機器。
Jenkins 官方文檔是終極指南 →Jenkins User Documentation
五、總結歸納概述
-
Jenkins 是 CI/CD 領域的基石工具。它通過強大的自動化能力和無與倫比的可擴展性,幫助開發團隊實現快速、頻繁且可靠的軟件構建、測試和發布,是現代 DevOps 實踐中不可或缺的一環。
-
Jenkins 就像一個不知疲倦的軟件工廠機器人,自動完成代碼從提交到上線過程中的所有臟活累活,讓開發者更高效,軟件質量更高。