html静态检查应使用html publisher plugin,它不解析内容、仅托管嵌入html文件;allure插件因强制解析json/xml,对纯html报告会报错或跳过。

HTML静态检查该用哪个插件?别装Allure
HTML静态检查不是测试报告,Allure Jenkins Plugin 会强行解析 JSON/XML,对纯 HTML 文件报 allure-results directory is empty 或直接跳过。真正该用的是 HTML Publisher Plugin,它不解析内容,只做文件托管和页面嵌入。
常见错误现象:装了 Allure 插件后,在构建日志里看到 Skipping Allure report generation: no results found,但你的 HTML 报告明明生成在 dist/ 下——这是插件类型错配的典型信号。
- 确认插件已安装:
系统管理 → 插件管理 → 已安装中搜索HTML Publisher - 报告路径填相对路径,比如
dist/index.html(不是绝对路径,也不是./dist/index.html) - 勾选
Keep HTML reports for each build,否则每次构建后旧报告会被清掉 - 如果 HTML 依赖本地 CSS/JS 资源,确保整个
dist/目录被归档,而不仅是单个index.html
打包命令用 tar 还是 rsync?看部署结构
前端 HTML 部署本质是文件同步,tar 和 rsync 不是互斥选项,而是分工不同:前者适合「打包+传输+解压」全链路控制(如需版本隔离、软链接切换),后者适合「增量同步」到已有目录(如 nginx html/ 目录直替)。
容易踩的坑:用 rsync -av --delete 同步时,如果目标目录下有非构建产出的文件(比如手动放的 favicon.ico),会被一并删掉;而 tar 解压前不清理,旧文件残留导致资源 404。
- 用
tar的典型场景:tar zcf /data/app-v1.2.0.tar.gz -C dist/ .→ scp → ssh 执行mkdir -p /code/app-v1.2.0 && tar xf /data/app-v1.2.0.tar.gz -C /code/app-v1.2.0→ln -sf /code/app-v1.2.0 /usr/local/nginx/html - 用
rsync的典型场景:rsync -av --delete --exclude='.git' dist/ root@192.168.85.140:/usr/local/nginx/html/,注意末尾斜杠不能少 - 若 Jenkins 和 Web 服务器是同一台,直接
cp -r dist/* /usr/local/nginx/html/更快,但要确保nginx进程用户(通常是www-data或nginx)有读取权限
HTML Publisher Plugin 显示空白页?检查三件事
点了「Publish HTML report」链接后页面白屏或提示 404 Not Found,大概率不是插件问题,而是路径或权限链断裂。
核心判断逻辑:Jenkins 把 HTML 文件复制到自己的 artifacts 目录(如 /var/jenkins_home/jobs/your-job/builds/123/artifacts/dist/),再通过内置 Jetty 提供 HTTP 服务。这个过程依赖三个环节都正常。
- 构建步骤中是否真实生成了文件?执行
sh 'ls -l dist/'看输出,空目录会导致插件无动作 -
HTML directory to archive填的是目录名(如dist),不是文件名;且该目录必须存在于 workspace 根下,不能是子路径如src/dist(除非你改了归档路径) - Jenkins 主进程用户(如
jenkins)必须对dist/有读权限;若构建用root用户跑,而dist/权限是root:root 700,Jenkins 就读不到
为什么 build 后看不到 HTML 报告入口?
不是所有 Jenkins 版本默认显示「HTML Report」链接,尤其在声明式流水线中,它不会自动出现在侧边栏,必须显式调用 publishHTML 步骤。
自由风格项目里,配置项叫「Publish HTML reports」,勾选后填好路径即可;但声明式流水线(Jenkinsfile)里,必须写明:
steps {
publishHTML(target: [
allowMissing: false,
alwaysLinkToLastBuild: true,
keepAll: true,
reportDir: 'dist',
reportFiles: 'index.html',
reportName: 'Static Site Preview'
])
}
漏掉这一步,哪怕文件生成了、插件装了、路径也对,报告入口也不会出现。另外,reportFiles 必须是相对 reportDir 的文件名,不能带路径,比如不能写 dist/index.html。
最常被忽略的一点:Jenkins 内置的 HTML 查看器禁止执行内联 JavaScript,所以含 <script></script> 的报告页可能功能异常,这不是 bug,是安全策略——需要的话得改 Jenkins 启动参数加 -Dhudson.model.DirectoryBrowserSupport.CSP=,但不推荐。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











