我 有 一 个 * * 矩阵 管道 作业 * * , 它 执行 多 个 阶段 ( 大约 200 个 阶段 ) , 其中 大 部分 是 功能 测试 , 其 结果 由 以下 代码 记录 :
stage('Report') {
script {
def summary = junit allowEmptyResults: true, testResults: "**/artifacts/${product}/test-reports/*.xml"
def buildURL = "${env.BUILD_URL}"
def TestAnalyzer = buildURL.replace("/${env.BUILD_NUMBER}", "/test_results_analyzer")
def TestsURL = buildURL.replace("job/${env.JOB_NAME}/${env.BUILD_NUMBER}", "blue/organizations/jenkins/${env.JOB_NAME}/detail/${env.JOB_NAME}/${env.BUILD_NUMBER}/tests")
slackSend (
color: summary.failCount == 0 ? 'good' : 'warning',
message: "*<${TestsURL}|Test Summary>* for *${env.JOB_NAME}* on *${env.HOSTNAME} - ${product}* <${env.BUILD_URL}| #${env.BUILD_NUMBER}> - <${TestAnalyzer}|${summary.totalCount} Tests>, Failed: ${summary.failCount}, Skipped: ${summary.skipCount}, Passed: ${summary.passCount}"
)
}
}
中 的 每 一 个
问题 是 此 报告 阶段 经常 失败 , 并 出现 以下 错误 :
> Archive JUnit-formatted test results 9m 25s
[2022-11-16T02:51:49.569Z] Recording test results
Java heap space
格式
我 已经 通过 修改 systemd 服务 配置 将 jenkins 服务 器 的 堆 空间 增加 到 8GB , 方法 如下 :
software-dev@magnet:~$ sudo cat /etc/systemd/system/jenkins.service.d/override.conf
[Service]
Environment="JAVA_OPTS=-Djava.awt.headless=true -Xmx8g"
格式
因为 我 使用 以下 命令 进行 了 验证 :
software-dev@magnet:~$ tr '\0' '\n' < /proc/$(pidof java)/cmdline
/usr/bin/java
-Djava.awt.headless=true
-Xmx10g
-jar
/usr/share/java/jenkins.war
--webroot=/var/cache/jenkins/war
--httpPort=8080
格式
我 刚刚 将 堆 大小 增加 到 10GB , 我 将 等待 今晚 构建 的 结果 , 但 我 感觉 这个 堆 空间 量 看 起来 确实 太 大 了 , 所以 我 怀疑 某 个 插件 ( 可能 是 JUnit 插件 ) 可能 有 缺陷 , 可能 会 消耗 太 多 内存 。
有人 知道 这样 的 事情 吗 ? 有 没有 变通 的 办法 ?
更 重要 的 是 , 如果 一 个 插件 消耗 太 多 , 我 可以 使用 哪些 方法 来 尝试 跟踪 ? 我 从 CS 学位 开始 就 对 Java 有 了 概念 , 但 我 对 jenkins 开发 生态 系统 并 不 熟悉 。
先 谢谢 你 了 。
1条答案
按热度按时间1zmg4dgp1#
您可以尝试将测试拆分为块/批/组,但此解决方案需要更改代码。
更多详细信息
https://semaphoreci.com/community/tutorials/how-to-split-junit-tests-in-a-continuous-integration-environment
Grouping JUnit tests