windows配置Jenkins自動化定時任務+測試報告發送

一、Jenkins的安裝步驟

  1. JDK安裝

    • 沒有JDK的先安裝JDK
    • https://adoptium.net/zh-CN/temurin/releases/?os=any&arch=any&version=21
  2. 下載Jenkins

    • 由于JDK 1.8僅適配Jenkins 2.357之前的版本(如2.346.1及以下),需從舊版本渠道下載:
      • Filehorse網站:訪問 https://www.filehorse.com/download-jenkins/72492/ 下載Jenkins 2.346.1的Windows安裝包。
      • 官方歸檔頁面:訪問 https://archives.jenkins.io/,在歸檔中按版本號(如2.346.1)和發布日期查找對應Windows安裝文件(.msi或.zip)。
    • 注意:最新LTS版本(如2.357及以上)需JDK 11+,請勿下載最新版。
    • Jenkins 官方 Java 版本支持矩陣
    • 在這里插入圖片描述
  3. 啟動Jenkins服務

    • 安裝完成后,Jenkins服務會自動啟動。你可以通過訪問http://localhost:8080 來驗證是否啟動成功。
    • 若服務未啟動,可在命令提示符中執行以下命令啟動服務:
      net start jenkins
      
  4. 解鎖Jenkins

    • 首次訪問Jenkins時,需要輸入初始管理員密碼。你可以在以下路徑找到該密碼:
      C:\ProgramData\Jenkins\.jenkins\secrets\initialAdminPassword
      
    • 將密碼復制到解鎖頁面,然后按照向導完成Jenkins的初始化配置。

二、全局變量配置

  1. 配置JDK全局變量

    • 進入Jenkins管理界面,點擊"Manage Jenkins",接著選擇"Global Tool Configuration"。
    • 找到"JDK"部分,點擊"Add JDK"。
    • 輸入JDK名稱(例如:JDK1.8),取消勾選"Install automatically"。
    • 在"JAVA_HOME"字段中,填入JDK的安裝路徑,如:C:\Program Files\Java\jdk1.8.0_271
    • 最后點擊"Apply"和"Save"保存設置。
  2. 配置Git全局變量

    • 若你還未安裝Git,請先從https://git-scm.com/download/win 下載并安裝。Git的版本也不能太低或者太高
    • 在Jenkins管理界面,點擊"Manage Jenkins",然后選擇"Global Tool Configuration"。
    • 找到"Git"部分,點擊"Add Git"。
    • 輸入Git名稱(例如:Git),在"Path to Git executable"字段中,填入Git的安裝路徑,如:C:\Program Files\Git\cmd\git.exe
    • 點擊"Apply"和"Save"保存設置。

? 完整 Jenkins 自由風格項目配置攻略(更新版)

🎯 目標功能清單

功能狀態
🕒 每隔 10 分鐘自動觸發一次? 支持
🔧 參數化輸入:PLATFORM, DEVICE_ID, TESTCASE? 支持
💬 手動運行時可自定義參數值? 支持
?? 定時任務使用默認值運行? 支持
📁 工作空間目錄 = Jenkins Job 名稱 + 代碼倉庫名稱? 支持
📤 構建完成后發送郵件? 支持
📎 郵件中附帶最新 Allure 報告鏈接? 支持
📩 收件人支持變量或固定地址? 支持
📊 自動生成 Allure 測試報告? 支持

🔧 第一步:新建自由風格項目(Freestyle Project)

  1. 登錄 Jenkins 控制臺;
  2. 點擊 New Item
  3. 輸入任務名稱(如 AndroidSmoke);
  4. 選擇 Freestyle project
  5. 點擊 OK

🔧 第二步:啟用參數化構建(Parameterized Build)

進入你的 Job 頁面 → Configure

勾選:

? This project is parameterized

添加以下三個 String Parameter

NameDefault Value (示例)Description
PLATFORMAndroid平臺名稱
DEVICE_IDemulator-5554設備 ID
TESTCASEtest_smoke要執行的測試用例名

保存后,你可以手動運行時修改這些值,定時任務會使用默認值。


🔧 第三步:設置定時構建(Build periodically)

在同一個頁面 → Build Triggers

勾選:

? Build periodically

填寫定時表達式:

H/10 * * * *

表示:每隔 10 分鐘運行一次。


🔧 第四步:配置全局環境變量(如 HOME)

進入:

Manage Jenkins > Configure System

找到:

? Global properties
勾選 Environment variables
添加:

NameValue
HOMEC:\Users\4388(替換成你的用戶名)

這可以確保 Jenkins 在不同機器上都能正確訪問 .ssh 文件夾和 SSH 私鑰。


🔧 第五步:編寫完整的 Windows Batch 構建腳本

進入你的 Job → ConfigureBuild
點擊 Add build stepExecute Windows batch command

粘貼以下完整腳本(適配動態報告目錄 + SSH 免卡頓):

@echo offREM 設置 HOME 環境變量(用于 SSH)
set HOME=C:\Users\4388REM 自動信任 GitHub 主機指紋
echo github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk= >> "%HOME%\.ssh\known_hosts"REM 獲取當前 Job 名稱
set WORKSPACE_NAME=%JOB_NAME%REM 進入 Jenkins 默認工作空間目錄
cd /d "%WORKSPACE%"REM 定義代碼目錄
set CODE_DIR=%WORKSPACE%\SuuntoTestREM 克隆或更新代碼
if not exist "%CODE_DIR%\.git" (echo === 第一次克隆代碼 ===git clone git@github.com:SportsTrackingTechnologies/SuuntoTest.git SuuntoTest
) else (echo === 更新現有代碼 ===cd %CODE_DIR%git fetchREM 根據實際分支名替換 master/main/devgit pull origin dev
)REM 進入項目目錄
cd %CODE_DIR%REM 創建虛擬環境(如果不存在)
if not exist ".venv" (echo === 創建 Python 虛擬環境 .venv ===python -m venv .venv
)REM 激活虛擬環境
call .venv\Scripts\activate.batREM 忽略 pipenv 警告
set PIPENV_IGNORE_VIRTUALENVS=1REM 安裝 pipenv(如未安裝)
where pipenv >nul 2>nul
if ERRORLEVEL 1 pip install pipenvREM 安裝依賴
pipenv installREM 設置 allure-results 輸出路徑并創建目錄
set ALLURE_RESULTS_DIR=%CODE_DIR%\log\allure-results
if not exist "%ALLURE_RESULTS_DIR%" mkdir "%ALLURE_RESULTS_DIR%"REM 執行測試腳本
python run_jenkins_main.py %PLATFORM% %DEVICE_ID% "%TESTCASE%" "%ALLURE_RESULTS_DIR%"REM 獲取 log 目錄下最新的子目錄名稱(按修改時間排序)
:: for /f "delims=" %%F in ('dir /b /ad /o-d log ^| findstr /v "allure"') do (
::     set latest_dir=%%F
::     goto :done
:: )
:: :done:: echo 最新目錄為: %latest_dir%REM 使用 setx 注入臨時環境變量(僅限當前會話)
:: set LATEST_DIR "%latest_dir%"REM 強制返回 0,防止 Jenkins 因 exit code 報錯
exit /b 0

🔧 第六步:安裝并配置 Allure 插件(生成可視化報告)

1. 安裝插件

進入 Jenkins → Manage Jenkins > Manage Plugins

搜索并安裝:

? Allure Jenkins Plugin

2. 配置 Allure Commandline 路徑

進入 Jenkins → Manage Jenkins > Global Tool Configuration

找到 Allure Commandline 區域,點擊 Allure installations…

添加一個安裝項:

字段示例值
NameAllure-2.21.0
PathD:\tools\allure-2.21.0(你實際解壓的路徑)

? 勾選 Installed by Jenkins(如果你希望 Jenkins 自動下載)

或者不勾選,手動填寫你本地安裝路徑即可。

保存設置。

3. 在 Job 中配置 Allure Report 展示

進入你的 Job → ConfigurePost-build Actions

? 添加:

Allure Report

填寫:

  • Results directory: SuuntoTest/log/*/allure-results
    (通配符 * 表示匹配任意最新目錄)
  • Allure Commandline: Allure-2.21.0(你剛剛配置的名稱)

保存后,每次構建完成后 Jenkins 會自動生成并展示 Allure 報告。


🔧 第七步:配置郵件通知(163 郵箱)

1. 安裝郵件插件

進入 Jenkins → Manage Jenkins > Manage Plugins

安裝以下插件:

插件名稱用途
Email Extension Plugin郵件擴展支持
Email-ext Template HTML email支持 HTML 郵件模板
Mailer簡單郵件發送器

重啟 Jenkins。

2. 配置 SMTP 郵箱服務器(163)

進入 Jenkins → Manage Jenkins > Configure System

向下滾動到 Extended E-mail Notification

填寫如下信息:

字段示例值
SMTP serversmtp.163.com
Use SSL? 勾選
SMTP port587(推薦)或 465
Useryour_email@163.com
Passwordyour-smtp-auth-code(SMTP 授權碼)
Admin e-mail addressyour_email@163.com
Default user e-mail suffix@163.com(可選)

? 推薦使用端口 587 + TLS 加密,避免企業網絡限制。

3. 在 Job 中添加郵件通知

進入你的 Job → ConfigurePost-build Actions

? 添加:

Editable Email Notification
Recipients:
dengping@suunto.cn
Content Type:
text/html
Default Content(HTML 內容):
<h3>Jenkins 自動化測試已完成</h3>
<p>項目名稱: ${JOB_NAME}</p>
<p>構建編號: ${BUILD_NUMBER}</p>
<p>平臺: ${PLATFORM}</p>
<p>設備ID: ${DEVICE_ID}</p>
<p>測試用例: ${TESTCASE}</p>
<p>Allure 報告地址:<a href="${JOB_URL}ws/SuuntoTest/log">點擊查看本次 Allure 報告</a></p
Trigger:

建議至少添加兩個觸發條件:

  • Failure:構建失敗時通知
  • Success:構建成功時通知

? 保存后重新運行構建任務,你應該能看到郵件發送成功。


📌 特別說明:DEFAULT_RECIPIENTS 變量在哪里設置?

方法一:在 Jenkins 全局變量中設置(推薦)

進入:

Manage Jenkins > Configure System

找到:

? Global properties
勾選 Environment variables
添加:

NameValue
DEFAULT_RECIPIENTSdengping@suunto.cn

這樣所有使用 ${DEFAULT_RECIPIENTS} 的 Job 都能統一收件人。


? 總結:163 郵箱推薦配置匯總

配置項推薦值
SMTP Serversmtp.163.com
SMTP Port587(推薦)或 465
Use SSL/TLS? 勾選
Useryour_email@163.com
PasswordSMTP 授權碼(不是登錄密碼)
Recipient list收件人郵箱,多個用英文逗號分割
Jenkins 用戶權限? 使用本地賬戶運行 Jenkins(非 SYSTEM)
Jenkins 郵件插件? 安裝 Email Extension PluginEmail-ext Template HTML email

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

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

相關文章

預訓練語言模型基礎知識概述

文章目錄 預處理語言模型的發展預訓練語言模型統計語言模型神經網絡語言模型 詞向量onehot編碼詞嵌入word embedding Word2Vec模型RNN和LSTMRNNLSTM ELMo模型預訓練下游任務 Attention自注意力Masked Self AttentionMulti-head Self Attention 位置編碼Transformer概念GPT概念B…

瀏覽器工作原理24 [#]分層和合成機制:為什么css動畫比JavaScript高效

引用 《瀏覽器工作原理與實踐》 本文主要講解渲染引擎的分層和合成機制&#xff0c;因為分層和合成機制代表了瀏覽器最為先進的合成技術&#xff0c;Chrome 團隊為了做到這一點&#xff0c;做了大量的優化工作。了解其工作原理&#xff0c;有助于拓寬你的視野&#xff0c;而且也…

【數字后端】-什么是RC corner? 每種Corner下有什么區別?

芯片的寄生參數可以在多個corner下提取&#xff0c;他們對應了不同情況的net delay Typical&#xff1a;R和C都是標準值Cmax(Cworst)&#xff1a;C最大的互連角&#xff0c;R小于TypicalCmin(Cbest)&#xff1a;C最小&#xff0c;R大于TypicalRCmax(RCworst)&#xff1a;互連線…

HarmonyOS開發基礎 --鴻蒙倉頡語言基礎語法入門

倉頡編程語言是華為自主研發的一種面向全場景應用開發的現代編程語言&#xff0c;具有高效編程、安全可靠、輕松并發和卓越性能等特點。本節將簡單介紹倉頡語言的部分語法和使用&#xff0c;幫助開發者快速上手。 1.3.1&#xff1a;數據類型 整數 倉頡把整數分為有符號和無符…

Excel文件比較器v1.3,html和js寫的

Excel文件比較器v1.3 版本說明&#xff1a;v1.3 1添加支持文件格式&#xff1a;CSV。 2&#xff0c;添加60條歷史記錄保存功能 - 用于保存比對結果。歷史記錄保存在瀏覽器的localStorage中&#xff0c;這是一個瀏覽器提供的本地存儲機制&#xff0c;數據會一直保留直到用戶…

Kimi“新PPT助手” ,Kimi全新自研的免費AI生成PPT助手

大家好&#xff0c;這里是K姐。 一個幫你用AI輕松生成精美PPT的女子。 前段時間給大家分享了一期用智能體做PPT的對比測評&#xff0c;很多友友都表示&#xff1a;那 Kimi 呢&#xff1f; 今天偶然發現 Kimi 新增了一個叫“新PPT助手”的功能&#xff0c;立馬上手體驗了一下…

MySQL DATETIME類型存儲空間詳解:從8字節到5字節的演變

在MySQL數據庫設計中&#xff0c;DATETIME類型用于存儲日期和時間信息&#xff0c;但其存儲空間大小并非固定不變&#xff0c;而是隨MySQL版本迭代和精度定義動態變化。本文將詳細說明其存儲規則&#xff0c;并提供清晰的對比表格。 一、核心結論 MySQL 5.6.4 是分水嶺&#…

Gartner發布中國企業應用生成式AI指南:避免12 個 GenAI 陷阱

GenAI 技術&#xff08;例如 AI 代理和 DeepSeek&#xff09;的快速迭代導致企業抱有不切實際的期望。本研究借鑒了我們與中國 AI 領導者就常見的 GenAI 陷阱進行的討論&#xff0c;并提供了最終有助于成功采用的建議。 主要發現 接受調查的首席信息官表示&#xff0c;生成式人…

Vue3中ref和reactive的區別與使用場景詳解

在 Vue 3 中&#xff0c;響應式系統進行了全新設計&#xff0c;ref 和 reactive 是其中的核心概念。 ### 一、ref 的使用 ref 適用于基本數據類型&#xff0c;也可以用于對象&#xff0c;但返回的是一個帶 .value 的包裝對象。 js import { ref } from vue const count ref(…

React性能優化:父組件如何導致子組件重新渲染及避免策略

目錄 React性能優化&#xff1a;父組件如何導致子組件重新渲染及避免策略什么是重新渲染&#xff1f;父組件如何"無辜"地讓子組件重新渲染&#xff1f;示例 1: 基礎父組件狀態變更示例 2: 傳遞未變化的原始類型Prop示例 3: 傳遞引用類型Prop&#xff08;對象&#xf…

圖的拓撲排序管理 Go 服務啟動時的組件初始化順序

在構建復雜的 Go 應用程序時&#xff0c;服務的啟動過程往往涉及多個組件的初始化&#xff0c;例如日志、配置、數據庫連接、緩存、服務管理器、適配器等等。這些組件之間通常存在著復雜的依賴關系&#xff1a;日志可能需要配置信息&#xff0c;數據庫連接可能依賴日志和追蹤&a…

【物理重建】SPLART:基于3D高斯潑濺的鉸鏈估計與部件級重建

標題&#xff1a;《SPLART: Articulation Estimation and Part-Level Reconstruction with 3D Gaussian Splatting》 項目&#xff1a;https://github.com/ripl/splart 文章目錄 摘要一、引言二、相關工作2.1 數據驅動的鉸鏈學習2.2 物體重建的表征方法2.3 鉸鏈物體重建 三、方…

vscode中vue自定義組件的標簽失去特殊顏色高亮

遇到的問題 最近接觸了一個歷史遺留項目時&#xff0c;我遭遇了堪稱"史詩級屎山"的代碼結構——各種命名混亂的自定義組件和原生HTML標簽混雜在一起&#xff0c;視覺上完全無法區分。這讓我突然想起&#xff0c;之前在使用vue或者其他框架開發的時候&#xff0c;只要…

【Dify精講】第19章:開源貢獻指南

今天&#xff0c;讓我們深入 Dify 的開源貢獻體系&#xff0c;看看這個項目是如何在短短時間內聚集起一個活躍的開發者社區的。作為想要參與 Dify 開發的你&#xff0c;這一章將是你的實戰指南。 一、代碼貢獻流程&#xff1a;從想法到合并的完整路徑 1.1 貢獻前的準備工作 …

Web攻防-CSRF跨站請求偽造Referer同源Token校驗復用刪除置空聯動上傳或XSS

知識點&#xff1a; 1、Web攻防-CSRF-原理&檢測&利用&防御 2、Web攻防-CSRF-防御-Referer策略隱患 3、Web攻防-CSRF-防御-Token校驗策略隱患 一、演示案例-WEB攻防-CSRF利用-原理&構造 CSRF 測試功能點 刪除帳戶 更改電子郵件 如果不需要舊密碼&#xff0c;請…

Drag-and-Drop LLMs: Zero-Shot Prompt-to-Weights

“拖拽式大模型定制”&#xff08;Drag-and-Drop LLMs: Zero-Shot Prompt-to-Weights&#xff09;。 核心問題&#xff1a; 現在的大模型&#xff08;比如GPT-4&#xff09;很厲害&#xff0c;但想讓它們專門干好某個特定任務&#xff08;比如解數學題、寫代碼&#xff09;&am…

抖音視頻怎么去掉抖音號水印保存

隨著抖音成為短視頻平臺的領軍者&#xff0c;越來越多的人喜歡在上面拍攝、觀看和分享各種創意內容。對于用戶來說&#xff0c;下載抖音視頻并去除水印保存&#xff0c;以便后續使用或分享成為了一種常見需求。抖音號水印的存在雖然能幫助平臺追溯視頻源頭&#xff0c;但也讓許…

【RAG技術(1)】大模型為什么需要RAG

文章目錄 為什么需要RAG&#xff1f;RAG的工作原理關鍵的Embedding技術 RAG vs 模型微調&#xff1a;選擇的核心邏輯RAG的關鍵挑戰與解決思路1. 檢索質量決定一切2. 上下文長度限制 實際應用場景分析企業知識問答技術文檔助手法律咨詢系統 構建RAG系統的關鍵步驟總結 為什么需要…

JS紅寶書筆記 - 8.1 理解對象

對象就是一組沒有特定順序的值&#xff0c;對象的每個屬性或者方法都可由一個名稱來標識&#xff0c;這個名稱映射到一個值。可以把對象想象成一張散列表&#xff0c;其中的內容就是一組名值對&#xff0c;值可以是數據或者函數 創建自定義對象的通常方式是創建Object的一個新…

Meson介紹及編譯Glib庫

一.概述 1.Meson 的簡介 Meson&#xff08;The Meson Build System&#xff09;是個項目構建系統&#xff0c;類似的構建系統有 Makefile、CMake、automake …。 Meson 是一個由 Python 實現的開源項目&#xff0c;其思想是&#xff0c;開發人員花費在構建調試上的每一秒都是…