四、jenkins自動構建和設置郵箱

一、jenkins自動構建

什么自動構建、有啥用:

  1. 觸發方式

    • 代碼提交(Git push)

    • 定時任務(如每天凌晨構建)

    • 手動點擊等方式(立即執行)

  2. 執行內容

    • 從 Git/SVN 拉取最新代碼

    • 運行編譯(如 Maven/Gradle)

    • 執行單元測試、代碼掃描

    • 生成部署包(如 JAR/WAR/Docker 鏡像)

    • 自動部署到測試/生產環境

  3. 核心價值

    • 省時:無需手動操作,提交代碼即觸發流程。

    • 可靠:避免人為失誤,確保每次構建一致。

    • 快速反饋:失敗時立即通知,問題早發現早修復。

一句話總結
Jenkins 自動構建 = “代碼提交后,全流程自動化處理,直到軟件可運行”

二、自動構建方式

注意:版本不同,自動構建按鈕的位置有差距,反正找到自動構建進行。

點擊項目

?點擊配置

方法1:觸發遠程構建?

設置密碼后保存

目前構建是第5次

現在訪問jenkins網址+后面的路徑和密碼試試,能不能自動構建

?方法2:其他項目構建后觸發

意思:就是前面有個項目構建了,構建完成后觸發我的項目構建,這種適用于有子項目或者項目有關系的。

目前我的項目構建序號是6,現在我執行我前面那個項目“web_demo_liushui”

刷新項目一看確實自動構建了

方法3:定時任務構建

* * * * * :表示分 時 日 月 周,和linux定時任務類似,但不完全一樣,到時候直接讓deepseek給你生成想要的時間也行,知道大概邏輯即可。

以下是案例:

現在我們設置下時間,保存看看到時間后,構建不

可以看到我設置的是下午6點47分,時間到了后刷新一下,發現構建了

方法4:輪詢SCM
輪詢SCM,是指定時掃描本地代碼倉庫的代碼是否有變更,如果代碼有變更就觸發項目構建。?

大概意思:我用的gitlab倉庫,他會掃描我的gitlab,如果gitlab變更了,就會執行構建,如果gitlab沒更新,那一直不會自動構建。

注意:這次構建觸發器,Jenkins會定時掃描本地整個項目的代碼,增大系統的開銷,不建議使用。

現在我設置一下,設置為2分鐘掃描一次gitlab,如果gitlab有變動,給我自動構建。

2分鐘過了,一直沒構建(以為我沒改代碼)

現在我idea改代碼,提交到gitlab

提交成功后,等待2分鐘,刷新項目。

方法5:githook自動觸發構建

剛才我們看到在Jenkins的內置構建觸發器中,輪詢SCM可以實現Gitlab代碼更新,項目自動構建,但是該方案的性能不佳。

那有沒有更好的方案呢?有的。就是利用Gitlab的webhook發現代碼提交或者修改后,gitlab立即觸發項目自動構建。

jenkins設置

(1)下載插件:GitLab 、 Gitlab Hook

(注意:新版本jenkins只安裝GitLab即可,老版本還得安裝Gitlab Hook)

遇到的問題:安裝這個插件時,部分安裝失敗,看報錯是已存在部分插件需要先手動跟新下。

插件安裝完成后,這里多了一個這種方式的觸發器

注意這里有個地址,就是jenkins的項目地址,這個地址要配置到gitlab,下面會說。?

(2)jenkins的全局變量設置

關閉一個東西

?gitlab設置

root登錄,開啟githook功能,且配置地址

開啟githook功能

?

設置項目的發送地址

?

?

添加成功后,測試一下。發現測試通了

?

驗證?

修改idea代碼,提交,會自動構建

看tomcat項目更新了,沒問題

?三、分支構建

例如說我們實際項目中會使用時又uat、sit、生產等環境。

jenkins可以根據設置,選擇我們想啟動的分支。

jenkins設置

進入項目,添加參數

設置參數名和默認值

?

自帶默認值

?

idea設置

?

提交代碼,build一下

?

新增一個uat分支

新增一個uat分支

?

創建成功,已經在uat分支了

同時查看gitlab也多了一個uat分支

修改代碼,提交到uat分支

?

?build選擇uat

看日志,看tomcat已經是uat項目

?

?build選擇master

?四、郵箱配置

安裝插件

email extension template

配置郵箱

插件安裝成功后,進入全局配置

?配置這一塊

在配置這一塊

在最上面,搜索系統管理員郵箱地址配置上

?

當面倒數第2個圖里的那個test config……也可以驗證下郵箱是不是通了

驗證郵箱配置成功

?

?給項目配置郵件發送

給具體某個項目配置,項目啟動成功后,發送郵箱,idea新增文件email.html,內容如下

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日志</title>
</head><body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"offset="0">
<table width="95%" cellpadding="0" cellspacing="0"style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"><tr><td>(本郵件是程序自動下發的,請勿回復!)</td></tr><tr><td><h2><font color="#0000FF">構建結果 - ${BUILD_STATUS}</font></h2></td></tr><tr><td><br /><b><font color="#0B610B">構建信息</font></b><hr size="2" width="100%" align="center" /></td></tr><tr><td><ul><li>項目名稱&nbsp;:&nbsp;${PROJECT_NAME}</li><li>構建編號&nbsp;:&nbsp;第${BUILD_NUMBER}次構建</li><li>觸發原因:&nbsp;${CAUSE}</li><li>構建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li><li>構建&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li><li>工作目錄&nbsp;:&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li><li>項目&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li></ul></td></tr><tr><td><b><font color="#0B610B">Changes Since LastSuccessful Build:</font></b><hr size="2" width="100%" align="center" /></td></tr><tr><td><ul><li>歷史變更記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li></ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}</td></tr><tr><td><b>Failed Test Results</b><hr size="2" width="100%" align="center" /></td></tr><tr><td><prestyle="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre><br /></td></tr><tr><td><b><font color="#0B610B">構建日志 (最后 100行):</font></b><hr size="2" width="100%" align="center" /></td></tr><tr><td><textarea cols="80" rows="30" readonly="readonly"style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea></td></tr>
</table>
</body>
</html>

然后jenkinsfile引用上面的文件

pipeline {agent anystages {stage('pull code') {steps {checkout scmGit(branches: [[name: '*/${branch}']], extensions: [], userRemoteConfigs: [[credentialsId: 'dd118ea3-a9af-414b-9e56-3316395b041f', url: 'http://192.168.157.159:82/testjenkinszu/web_demo.git']])}}stage('build project') {steps {sh 'mvn clean package'}}stage('publis project') {steps {deploy adapters: [tomcat9(credentialsId: '0c67a409-c11f-46a0-ac46-f659c6097b0a', path: '', url: 'http://192.168.157.160:8090')], contextPath: null, war: 'target/*.war'}}}post {always{emailext(subject: '構建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',body: '${FILE,path="email.html"}',to:'2311685383@qq.com')}}
}

然后提交到gitlab,build一下,看看有沒發郵箱。我這沒法,但沒報錯,方式是這么個方法,沒法郵箱也沒排查出來,估計某個地方不對。

這個發郵箱生產、測試估計都用不到,用到了在排查吧。?

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

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

相關文章

【深度學習新浪潮】深入解析LLM關鍵概念:架構、優化與最新研究進展

1. Transformer架構與注意力機制 概念解析 Transformer是LLM的核心架構,由編碼器和解碼器組成,其核心創新是自注意力機制,通過計算輸入序列中每個位置的關聯權重,動態聚焦關鍵信息。自注意力機制的計算復雜度為O(n),在處理長序列時成為性能瓶頸。 代碼示例:基礎Transfo…

RAGflow圖像解析與向量化分析

RAGflow圖像解析與向量化分析 注:需要提前部署好ragflow,才方便一 一對應代碼,部署教程:rag部署教程,這樣才會方便后續更改 1. 圖像解析流程 RAGflow通過多種解析器處理不同類型的文檔,其中圖像解析是一個重要組成部分。以下是RAGflow處理圖像的主要流程: 1.1 PDF文…

千翼破界,百景賦能 | 2025深圳eVTOL展無人機場景應用專場即將啟幕

在技術革新、應用深化、產業鏈協同升級及低空空域管理改革等多重政策紅利驅動下&#xff0c;我國工業級無人機產業正邁入爆發式增長新階段&#xff0c;持續引領民用無人機市場繁榮。數據顯示&#xff0c;2019 至2024年&#xff0c;我國民用無人機市場規模從435.1億元躍升至1108…

Go語言標識符命名規則詳解:工程化實踐

引言 Go語言的命名規則是其簡潔哲學和工程實用性的集中體現。下面從語法規范、最佳實踐到實際應用進行全面解析&#xff1a; 一、基礎命名規則 1. 變量命名 // 小駝峰式&#xff08;lowerCamelCase&#xff09; var userName string var maxRetryCount 3 var isConnected bool…

RISC-V:開源芯浪潮下的技術突圍與職業新賽道 (一)為什么RISC-V是顛覆性創新?

第一篇&#xff1a;開篇&#xff1a;為什么RISC-V是顛覆性創新&#xff1f; 打破70年架構壟斷&#xff0c;開源硬件如何重塑芯片產業規則&#xff1f;一、傳統架構的“圍城之困”&#xff08;痛點切入&#xff09; ARM/X86的統治代價 授權費暴利模型 &#xff1a; ARM指令集授權…

【機器學習筆記 Ⅱ】7 多類分類

1. 多類分類&#xff08;Multi-class Classification&#xff09; 定義 多類分類是指目標變量&#xff08;標簽&#xff09;有超過兩個類別的分類任務。例如&#xff1a; 手寫數字識別&#xff1a;10個類別&#xff08;0~9&#xff09;。圖像分類&#xff1a;區分貓、狗、鳥等。…

2025年深圳杉川機器人性格測評和Verify測評SHL題庫高分攻略

1、杉川機器人包含性格測評和Verify測評&#xff0c;預計用時60min&#xff0c;請確保作答時周圍環境無干擾、網絡暢通&#xff1b;2、請使用電腦完成作答&#xff0c;建議使用以下瀏覽器登錄&#xff1a;IE9.0及以上版本&#xff0c;火狐&#xff0c;谷歌&#xff1b;3、杉川機…

【flutter 在最新版本中已經棄用了傳統的 apply from 方式引入 Gradle 插件】

報錯 Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source! Launching lib\main.dart on 2112123AC in debug mode... Running Gradle task assembleDebug...FAILURE: Build failed with an exception.* Where: Script D…

Web后端實戰:(部門管理)

1.準備工作 1.1開發規范 1.1.1前后端分離開發 我們目前基本都是采用的前后臺分離開發方式&#xff0c;如下圖所示&#xff1a; 那么基于前后臺分離開發的模式下&#xff0c;我們后臺開發者開發一個功能的具體流程如何呢&#xff1f;如下圖所示&#xff1a; 需求分析&…

字節尋址(Byte Addressing) 與 Verilog中的寄存器索引

字節尋址&#xff08;Byte Addressing&#xff09; 與 Verilog中的寄存器索引 之間的關系。 您的疑問非常正確&#xff0c;直接看 3h1 很容易讓人以為地址就是 0x01。 但答案是&#xff1a;是的&#xff0c;3h1 在這里對應的字節地址&#xff08;Byte Address&#xff09;確實是…

Ubuntu遠程桌面

方法1: 檢查并使用已安裝的VNC或遠程桌面組件 請在終端中執行以下命令檢查系統中已安裝的相關組件: bash# 檢查系統中已安裝的VNC和遠程桌面相關軟件 dpkg -l | grep -E "vnc|vino|remote|rdp"# 檢查常見遠程桌面服務 which vino-server tigervncserver x11vnc xr…

WEB攻防-文件包含LFIRFI偽協議編碼算法無文件利用黑白盒

知識點&#xff1a; 1、文件包含-原理&分類&危害-LFI&RFI 2、文件包含-利用-黑白盒&無文件&偽協議 一、演示案例-文件包含-原理&分類&利用 1、原理 程序開發人員通常會把可重復使用的函數寫到單個文件中&#xff0c;在使用某些函數時&#xff…

LabVIEW的GPIB儀器校準

基于LabVIEW開發平臺與 GPIB 總線技術&#xff0c;采用是德科技、泰克等硬件設備&#xff0c;構建示波器與頻譜分析儀自動校準系統。通過圖形化編程實現校準流程自動化&#xff0c;涵蓋設備連接、參數配置、數據采集、誤差分析及報告生成&#xff0c;顯著提升校準效率與精度&am…

Zotero中進行文獻翻譯【Windows11】

zotero官網&#xff1a;https://www.zotero.org/ 1 在Zotero軟件中安裝插件 進入Zotero百科全書&#xff0c;依次點擊&#xff1a;插件→翻譯插件→插件介紹→Zotero 中文社區插件商店 進去后搜索pdf2zh&#xff0c;然后下載后放入空白文件夾zotero-pdf2zh 打開Zotero軟件后…

用U盤啟動制作centos系統最常見報錯,系統卡住無法繼續問題(手把手)

一、按照操作系統centos7報錯如下&#xff08;U盤&#xff09; 按照系統報錯如下&#xff1a; ERROR: could not insert ‘floppy’; ERROR: could not insert ‘edd’ : No這種報錯很常見&#xff0c;基本上就是u盤啟動路徑找不到導致&#xff0c;遇到次數比較多所以也比較好解…

C#中的BindingList有什么作用?

在C#中&#xff0c;BindingList<T> 是一個非常重要的集合類&#xff0c;位于 System.ComponentModel 命名空間&#xff0c;主要用于實現數據綁定&#xff08;Data Binding&#xff09;場景。1. 核心作用BindingList<T> 是 List<T> 的增強版&#xff0c;主要提…

Python爬取知乎評論:多線程與異步爬蟲的性能優化

1. 知乎評論爬取的技術挑戰 知乎的評論數據通常采用動態加載&#xff08;Ajax&#xff09;&#xff0c;這意味著直接使用**<font style"color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">requests</font>****<font style"color:rg…

軟件系統測試的基本流程

軟件系統測試流程是確保軟件質量的規范化過程&#xff0c;涵蓋從測試準備到最終上線評估的全周期&#xff0c;通常分為以下6個核心階段&#xff0c;各階段緊密銜接、形成閉環&#xff1a; 一、測試啟動與規劃階段 核心目標&#xff1a;明確“測什么、誰來測、怎么測”&#xff…

使用Linux操作MySQL數據庫分批導出數據為.SQL文件

當數據庫某張數據量非常大的表進行其他操作&#xff0c;需要先進行導出時&#xff1b; 先用linux進入操作環境&#xff0c; 1.添加一個export_mysql_batches.sh腳本文件&#xff0c; #!/bin/bash# 數據庫連接配置 DB_HOST"36.33.0.138:3306" DB_USER"devuser&qu…

LeetCode 算法題解:鏈表與二叉樹相關問題 打打卡

LeetCode 算法題解&#xff1a;鏈表與二叉樹相關問題 在算法學習和實踐中&#xff0c;LeetCode 是一個非常好的平臺&#xff0c;它包含了各種各樣的算法題目&#xff0c;有助于我們提升編程能力和解決問題的能力。本文將詳細講解在 leetcoding.cpp 文件中實現的一些鏈表和二叉樹…