一、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 off
REM 设置 HOME 环境变量(用于 SSH)
set HOME=C:\Users\4388
REM 自动信任 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%\SuuntoTest
REM 克隆或更新代码
if not exist "%CODE_DIR%\.git" (
echo === 第一次克隆代码 ===
git clone git@github.com:SportsTrackingTechnologies/SuuntoTest.git SuuntoTest
) else (
echo === 更新现有代码 ===
cd %CODE_DIR%
git fetch
REM 根据实际分支名替换 master/main/dev
git pull origin dev
)
REM 进入项目目录
cd %CODE_DIR%
REM 创建虚拟环境(如果不存在)
if not exist ".venv" (
echo === 创建 Python 虚拟环境 .venv ===
python -m venv .venv
)
REM 激活虚拟环境
call .venv\Scripts\activate.bat
REM 忽略 pipenv 警告
set PIPENV_IGNORE_VIRTUALENVS=1
REM 安装 pipenv(如未安装)
where pipenv >nul 2>nul
if ERRORLEVEL 1 pip install pipenv
REM 安装依赖
pipenv install
REM 设置 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 |