Jenkins:Stacktrace和GitLab之间的联系

gue*_*tli 8 python pytest jenkins gitlab

我们在公司使用Jenkins和GitLab.我们使用py.test为Jenkins创建XML输出,该输出由jUnit Jenkins插件呈现.

到目前为止,异常的堆栈跟踪是纯粹的ascii.如果我们能以某种方式挂钩Jenkins并显示我们的gitlab服务器的超链接而不是html pre块,那将是非常好的.

在我们的例子中,我们就足以过滤测试输出的每一行并在其上使用正则表达式....

Jenkins jUnit插件的示例输出:

File "/home/modwork_ems_d66/src/foo/foo/utils/testutils.py", line 975, in wrapped
    return fn(*args, **kwargs)
File "/home/modwork_ems_d66/src/foo/foo/tests/FooTest.py", line 641, in test_empty_models_if_unused
    models))
Run Code Online (Sandbox Code Playgroud)

我想要一个超链接到托管goo仓库"foo"的服务器.在我们的例子中,这将是" https://source/repos/foo/files/master/foo/foo/tests/FooTest.py"

怎么做到这一点?我知道如何使用正则表达式.问题是如何将正则表达式挂钩到jenkins.

这是一个可视化的屏幕截图 在此输入图像描述

我希望在单个测试的TestReport上有这个链接.这些页面的URL模式:

https://jenkins/job/ci_foo_bar/lastCompletedBuild/testReport/src.myapp.myapp.tests.test_tree/TestCase/test_something/
Run Code Online (Sandbox Code Playgroud)

Sca*_*ase 3

如果您可以在测试过程后获取异常输出,您可以实现一个解析器,它为您准备一个简单的 html 报告作为构建步骤。

最简单的方法是使用 sed 实现正则表达式

sed -e 's@"/home/modwork_ems_d66/src\(.*\?\)"@<a href="https://source/repos/foo/files/master\1">\1</a>@' exceptions.txt
Run Code Online (Sandbox Code Playgroud)

它对异常文件进行操作。