windows配置Jenkins自动化定时任务+测试报告发送

发布于:2025-06-26 ⋅ 阅读:(24) ⋅ 点赞:(0)

一、Jenkins的安装步骤

  1. JDK安装

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

  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

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 → ConfigureBuild
点击 Add build stepExecute 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 → 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 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 → 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
添加:

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 PluginEmail-ext Template HTML email


网站公告

今日签到

点亮在社区的每一天
去签到