一、Jenkins的安裝步驟
-
JDK安裝
- 沒有JDK的先安裝JDK
- https://adoptium.net/zh-CN/temurin/releases/?os=any&arch=any&version=21
-
下載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 版本支持矩陣
- 由于JDK 1.8僅適配Jenkins 2.357之前的版本(如2.346.1及以下),需從舊版本渠道下載:
-
啟動Jenkins服務
- 安裝完成后,Jenkins服務會自動啟動。你可以通過訪問http://localhost:8080 來驗證是否啟動成功。
- 若服務未啟動,可在命令提示符中執行以下命令啟動服務:
net start jenkins
-
解鎖Jenkins
- 首次訪問Jenkins時,需要輸入初始管理員密碼。你可以在以下路徑找到該密碼:
C:\ProgramData\Jenkins\.jenkins\secrets\initialAdminPassword
- 將密碼復制到解鎖頁面,然后按照向導完成Jenkins的初始化配置。
- 首次訪問Jenkins時,需要輸入初始管理員密碼。你可以在以下路徑找到該密碼:
二、全局變量配置
-
配置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"保存設置。
-
配置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"保存設置。
- 若你還未安裝Git,請先從https://git-scm.com/download/win 下載并安裝。
? 完整 Jenkins 自由風格項目配置攻略(更新版)
🎯 目標功能清單
功能 | 狀態 |
---|---|
🕒 每隔 10 分鐘自動觸發一次 | ? 支持 |
🔧 參數化輸入:PLATFORM , DEVICE_ID , TESTCASE | ? 支持 |
💬 手動運行時可自定義參數值 | ? 支持 |
?? 定時任務使用默認值運行 | ? 支持 |
📁 工作空間目錄 = Jenkins Job 名稱 + 代碼倉庫名稱 | ? 支持 |
📤 構建完成后發送郵件 | ? 支持 |
📎 郵件中附帶最新 Allure 報告鏈接 | ? 支持 |
📩 收件人支持變量或固定地址 | ? 支持 |
📊 自動生成 Allure 測試報告 | ? 支持 |
🔧 第一步:新建自由風格項目(Freestyle Project)
- 登錄 Jenkins 控制臺;
- 點擊 New Item;
- 輸入任務名稱(如
AndroidSmoke
); - 選擇 Freestyle project;
- 點擊 OK。
🔧 第二步:啟用參數化構建(Parameterized Build)
進入你的 Job 頁面 → Configure
勾選:
? This project is parameterized
添加以下三個 String Parameter:
Name | Default Value (示例) | Description |
---|---|---|
PLATFORM | Android | 平臺名稱 |
DEVICE_ID | emulator-5554 | 設備 ID |
TESTCASE | test_smoke | 要執行的測試用例名 |
保存后,你可以手動運行時修改這些值,定時任務會使用默認值。
🔧 第三步:設置定時構建(Build periodically)
在同一個頁面 → Build Triggers
勾選:
? Build periodically
填寫定時表達式:
H/10 * * * *
表示:每隔 10 分鐘運行一次。
🔧 第四步:配置全局環境變量(如 HOME)
進入:
Manage Jenkins > Configure System
找到:
? Global properties
勾選 Environment variables
添加:
Name | Value |
---|---|
HOME | C:\Users\4388 (替換成你的用戶名) |
這可以確保 Jenkins 在不同機器上都能正確訪問 .ssh
文件夾和 SSH 私鑰。
🔧 第五步:編寫完整的 Windows Batch 構建腳本
進入你的 Job → Configure → Build
點擊 Add build step → Execute 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…
添加一個安裝項:
字段 | 示例值 |
---|---|
Name | Allure-2.21.0 |
Path | D:\tools\allure-2.21.0 (你實際解壓的路徑) |
? 勾選 Installed by Jenkins(如果你希望 Jenkins 自動下載)
或者不勾選,手動填寫你本地安裝路徑即可。
保存設置。
3. 在 Job 中配置 Allure Report 展示
進入你的 Job → Configure → Post-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 server | smtp.163.com |
Use SSL | ? 勾選 |
SMTP port | 587 (推薦)或 465 |
User | your_email@163.com |
Password | your-smtp-auth-code (SMTP 授權碼) |
Admin e-mail address | your_email@163.com |
Default user e-mail suffix | @163.com (可選) |
? 推薦使用端口
587
+ TLS 加密,避免企業網絡限制。
3. 在 Job 中添加郵件通知
進入你的 Job → Configure → Post-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
添加:
Name | Value |
---|---|
DEFAULT_RECIPIENTS | dengping@suunto.cn |
這樣所有使用 ${DEFAULT_RECIPIENTS}
的 Job 都能統一收件人。
? 總結:163 郵箱推薦配置匯總
配置項 | 推薦值 |
---|---|
SMTP Server | smtp.163.com |
SMTP Port | 587 (推薦)或 465 |
Use SSL/TLS | ? 勾選 |
User | your_email@163.com |
Password | SMTP 授權碼(不是登錄密碼) |
Recipient list | 收件人郵箱,多個用英文逗號分割 |
Jenkins 用戶權限 | ? 使用本地賬戶運行 Jenkins(非 SYSTEM) |
Jenkins 郵件插件 | ? 安裝 Email Extension Plugin 和 Email-ext Template HTML email |