Java學習第一百零九部分——Jenkins(一)

目錄

一、前言簡介

二、核心價值與優勢

三、關鍵概念

四、下載安裝與配置

五、總結歸納概述


一、前言簡介

? ? ? ?Jenkins 是一個開源的、基于 Java 的自動化服務器。它的核心使命是實現持續集成和持續交付。簡單來說,Jenkins 是一個強大的工具,用于自動化軟件開發過程中那些重復性的、容易出錯的任務,示例如下:

  1. 構建:?編譯源代碼(如 Java、C++、Python)。
  2. 測試:?自動運行單元測試、集成測試等。
  3. 打包:?將代碼打包成可部署的格式(如 JAR、WAR、Docker 鏡像)。
  4. 部署:?將構建好的軟件包自動部署到測試環境、預生產環境或生產環境。
  5. 報告:?收集構建和測試結果,生成報告,通知相關人員。

二、核心價值與優勢

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.json

3. Java 版本不兼容: ?
? ?- 確保使用 Java 11/17!

下一步建議

  • 創建第一個 Pipeline:在項目根目錄添加 `Jenkinsfile`,用代碼定義構建流程。 ?

  • 集成 Git 倉庫:配置 Webhook 實現提交代碼自動觸發構建。 ?

  • 配置從節點(Agent):擴展構建能力至多臺機器。

  • Jenkins 官方文檔是終極指南 →Jenkins User Documentation

五、總結歸納概述

  • Jenkins 是 CI/CD 領域的基石工具。它通過強大的自動化能力和無與倫比的可擴展性,幫助開發團隊實現快速、頻繁且可靠的軟件構建、測試和發布,是現代 DevOps 實踐中不可或缺的一環。

  • Jenkins 就像一個不知疲倦的軟件工廠機器人,自動完成代碼從提交到上線過程中的所有臟活累活,讓開發者更高效,軟件質量更高。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918148.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918148.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918148.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微算法科技(NASDAQ:MLGO)使用循環QSC和QKD的量子區塊鏈架構,提高交易安全性和透明度

隨著量子計算技術的快速發展,傳統區塊鏈所依賴的加密算法面臨著被破解的潛在風險。量子計算的強大計算能力可能會在未來打破現有加密體系的安全性,從而對區塊鏈中的交易數據造成威脅。為了應對這一挑戰,將量子技術與區塊鏈相結合成為了必然的…

MyBatis SQL映射與動態SQL:構建靈活高效的數據訪問層 MyBatis SQL映射與動態SQL:構建靈活高效的數據訪問層

🔄 MyBatis SQL映射與動態SQL:構建靈活高效的數據訪問層 🚀 引言:動態SQL是MyBatis框架的核心優勢之一,它讓我們能夠根據不同條件動態構建SQL語句,避免了傳統JDBC中大量的字符串拼接。本文將深入解析MyBati…

v-model雙向綁定指令

文章目錄前言v-model.lazy 延遲同步v-model.trim 去掉空格前言 v-model指令是Vue.js中實現雙向數據綁定的一種重要機制。它可以將表單控件的值與Vue.js實例中的數據進行雙向綁定,即當表單控件的值發生變化時,Vue.js實例中的數據也會隨之更新&#xff0c…

電腦IP地址是“169.254.x.x”而無法上網的原因

一、核心原因:自動私有 IP 地址(APIPA)的啟用APIPA 機制:這是 Windows 等操作系統內置的一種 “備用方案”。當電腦設置為 “自動獲取 IP 地址”(通過 DHCP 協議),但無法從路由器、光貓等網絡設…

單片機存儲區域詳解

目錄 單片機內存區域劃分 boot引腳啟動介紹 1. boot引腳的三大啟動區域介紹 1.用戶閃存(User Flash) - 最常用模式 2. 系統存儲區(System Memory) - 出廠預置Bootloader區 3. 內置SRAM啟動(RAM Boot) - 特殊調試模式 2.用戶閃存(User Flash)內存管理詳解 一、用戶閃存中…

Go語言實戰案例:簡易JSON數據返回

在現代 Web 應用中,JSON 已成為前后端通信的主流數據格式。Go 語言標準庫內置對 JSON 的良好支持,只需少量代碼就能返回結構化的 JSON 響應。本篇案例將手把手帶你完成一個「返回 JSON 數據的 HTTP 接口」,幫助你理解如何用 Go 語言實現后端服…

扣子Coze中的觸發器實現流程自動化-實現每日新聞卡片式推送

基礎知識 什么是觸發器/能做什么 Triggers 智能體設置觸發器(Triggers),使智能體在特定時間或接收到特定事件時自動執行任務。為什么需要觸發器?實操步驟 第1步:打開一個智能體編輯頁第2步:技能 - 觸發器 -…

GitCode 7月:小程序積分商城更名成長中心、「探索智能倉頡!Cangjie Magic 體驗有獎征文活動」圓滿收官、深度對話欄目持續熱播

運營情況總結 🎉 截至7月底,GitCode 這個熱鬧的開發者社區,已經聚集了 656 萬位開發者小伙伴啦! 💻 產品:小程序積分商城更名為成長中心啦,更多功能將陸續上線。 🌟 G-Star&#xff…

機器學習之支持向量機(原理)

目錄 摘要 一、概述 二、SVM算法定義 1.超平?最?間隔介紹 2.硬間隔和軟間隔 1.硬間隔分類 2. 軟間隔分類 三、SVM算法原理 1 定義輸?數據 2 線性可分?持向量機 3 SVM的計算過程與算法步驟 四、核函數 五、SVM算法api介紹 1. 核心參數說明 2. 主要方法 3. 重…

【Unity3D實例-功能-跳躍】角色跳躍

今天,我們來聊聊 Unity 里最常打交道的動作之一——角色跳躍。無論是橫版闖關還是 3D 跑酷,跳躍都是讓角色“活”起來的核心操作。在 Unity 里,幾行腳本就能讓角色一蹬而起、穩穩落地。下面,就讓我們一起把這個“彈跳感”親手做出…

react+echarts實現變化趨勢縮略圖

如上圖,實現一個縮略圖。 import React, { useState, useEffect } from react; const ParentCom () > {const [data, setData] useState({});useEffect(() > {// 這里可以做一些接口請求等操作setData({isSheng: false, value: 11.24, percentage: 2.3%, da…

C語言宏相關操作

宏 宏名稱通常都是由大寫英文字母構成的宏名稱里不可以包含空格用宏給數字起名字的時候不可以使用賦值運算符,不要自增自減可以在編寫程序的時候直接使用宏名稱替代數字,編譯器在編譯的時候會把程序里的宏替換成它所代表的數字 1. 為什么要使用宏&#x…

STM32內部讀寫FLASH

很多情況下,在STM32中寫入一些數據,在某些不可控因素下其數據無法保存。因此,解決此問題就要用到FLASH.什么是內部 Flash? Flash 是一種非易失性存儲器,STM32 的程序和常量數據就存在 Flash 中。它的關鍵特點是:特性說…

Oracle 12c + Pl/Sql windows系統下表空間創建、遷移,dmp備份導入,數據庫字符集更改

一、開發環境 操作系統:win11 Oracle版本:12c Oracle 數據庫字符集:AL32UTF8 Pl/Sql版本:14 二、表空間創建 表空間是 Oracle 數據庫中一種重要的邏輯結構,它是數據庫中數據文件的邏輯集合,用于存儲數據庫對…

GUI:QT簡介

一、什么是QT?Qt是一套跨平臺的 C 圖形用戶界面(GUI)應用程序開發框架,由挪威 Trolltech(奇趣科技)于 1991 年創建,2008 年被諾基亞收購,2012 年后由 Qt Company 負責維護。它廣泛應…

oceanbase執行execute immediate create table提示無權限

問題:OB庫4.2.5.4版本,執行到這一句的時候,報沒有權限:[rootlnob ~]# obclient -h192.168.207.28 -P2881 -ugistarlnzyob -pxxxxxx -A Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3…

滴滴招java開發

滴滴集團 北京(崗位信息已經過jobleap.cn授權,可在csdn發布)收錄時間: 2025年08月01日職位描述 負責滴滴海外業務準入審核及反作弊相關系統的后端開發及系統維護; 職位要求 1、統招本科及以上學歷,計算機科…

深入解析基于Zookeeper分布式鎖在高并發場景下的性能優化實踐指南

深入解析基于Zookeeper分布式鎖在高并發場景下的性能優化實踐指南 在大規模分布式系統中,如何保證多個節點對同一資源的有序訪問,是提高系統穩定性與一致性的核心需求之一。Zookeeper 提供的分布式鎖機制,以其簡潔的原理和高可靠性&#xff0…

騰訊云CodeBuddy AI IDE+CloudBase AI ToolKit打造理財小助手網頁

CodeBuddy 騰訊云CodeBuddy AI IDECloudBase AI ToolKit打造理財小助手網頁 在線體驗地址:理財小助手 在線倉庫:https://cnb.cool/pickstars-2025/ai-financial-assistant 🌟 Hello,我是摘星! 🌈 在彩虹般…

2025-08-08 李沐深度學習11——深度學習計算

文章目錄1 模型構造1.1 自定義 MLP(多層感知機)1.1.1 __init__ (構造函數)1.1.2 forward (前向傳播)1.2 使用自定義 MLP1.3 自定義 Sequential 類1.4 前向傳播1.5 模塊的嵌套使用2 參數管理2.1 參數訪問2.2 嵌套模型2.3 參數初始化2.4 參數共享3 自定義層…