如何在Jenkins中用href关联HTML构建产物?
解决Jenkins构建产物中HTML相对链接被拦截的问题
问题根源
Jenkins默认会对构建产物中的HTML文件应用内容安全策略(CSP),限制本地文件链接、跨源资源的加载,导致相对链接触发浏览器拦截,出现about:blank#blocked提示。
无插件权限下的可行方案
1. 使用Jenkins artifact路径的绝对路径链接
直接在RegressionTestRun.html中写入基于Jenkins artifact目录的绝对路径链接,格式如下:
<a href="/job/stmt-automation-regressiontest-VM38-AMA/lastSuccessfulBuild/artifact/testrun_xxx.html">测试报告xxx</a>
如果需要指向特定构建号,替换lastSuccessfulBuild为对应构建号即可:
<a href="/job/stmt-automation-regressiontest-VM38-AMA/123/artifact/testrun_xxx.html">测试报告xxx</a>
这种方式遵循Jenkins的路径规则,不会触发CSP拦截。
2. 在报告生成脚本中动态拼接完整URL
如果回归测试报告是通过脚本生成的,可利用Jenkins环境变量BUILD_NUMBER动态拼接完整的artifact URL:
# Shell脚本示例:生成带完整路径的链接 BUILD_BASE_URL="https://jenkins.xxx.net/job/stmt-automation-regressiontest-VM38-AMA/${BUILD_NUMBER}/artifact/" echo "<a href=\"${BUILD_BASE_URL}testrun_001.html\">Test Run 001</a>" >> RegressionTestRun.html
生成的完整绝对URL可被浏览器正常加载,不受CSP限制。
3. 利用内置HTML Publisher插件(若已安装)
部分Jenkins实例默认预装了HTML Publisher插件,若你的环境已安装,可在构建后步骤配置:
- 选择「Publish HTML reports」
- 设置「HTML directory to archive」为当前artifact目录(如
.) - 设置「Index page」为
RegressionTestRun.html - 勾选「Allow script access」(若有此选项)
该方式会绕过CSP限制,让相对链接正常工作。
注意事项
- 禁止使用
file://协议的本地文件链接,Jenkins CSP会直接拦截这类链接。 - 确保所有子HTML文件都存放在Jenkins的artifact目录下,路径匹配准确。
内容的提问来源于stack exchange,提问作者user3711142
相关产品推荐
相关产品推荐

