从jenkins/hudson将测试数据保存到数据库的最佳方法是什么?

Rom*_*her 2 sql dashboard jenkins

我正在尝试为jenkins制作一个测试结果的仪表板(由os/hardware/ect标签动态过滤).

jenkins将测试结果从xml文件保存到中央数据库(最好是postgres)的最佳方法是什么?

sql插件似乎被设计为由其他插件使用.

我应该从jenkins.groovy脚本中调用java sql apis 吗?

has*_*chi 7

几种可能性:

在Grab中使用现有的java sql库

有几个世界级的Java SQL库在那里(https://commons.apache.org/proper/commons-dbutils/,https://github.com/jOOQ/jOOQ),你可以结合你的管道与使用.我个人喜欢jooq.然后你在groovy中编写你的特定代码.

@Grab(group='org.jooq', module='jooq', version='3.10.5')
import ...
Run Code Online (Sandbox Code Playgroud)

使用现有的Java库并将其放在类路径中

像上面的解决方案.但是你不用Grab导入库.而是直接从战争中开始jenkins,你维护自己的码头安装(https://wiki.jenkins.io/display/JENKINS/Jetty).这使您可以自由地向类路径添加其他库,然后可以在管道中使用它们.

编写一个java库并将其与Grab或classpath一起使用

而不是使用通用库并在groovy中编写您的特定要求.您可以创建一个库,该库提供满足您需求的API.您可以使用Grab导入它,或者将其添加到应用程序服务器的类路径中.在你的groovy脚本中,你只需要调用特定的API并传递参数.

编写自己的插件

您可以为您的目的编写一个插件,这不是那么困难https://jenkins.io/doc/developer/plugin-development/pipeline-integration/.该插件将文件路径作为参数.合同将是xml文件的结构(xml架构).您还可以添加参数来控制导入.

个人意见:

我会选择"编写一个java库并将其与Grab或classpath一起使用":

  • 由于简单,在单元级别上具有良好的测试可能性
  • 没有对jenkins执行具体要求的依赖,也可以在没有jenkins的情况下使用
  • 易于分发,可以部署到任何符合maven的存储库并从那里获取 @GrabResolver(name='custom', root='http://customserver/repo', m2Compatible='true')


FCh*_*FCh 5

您也可以通过数据库 REST API 来完成。只需在您的管道中调用sh并将工件放入数据库中。

sh("curl http://database:8080/api --verbose -X PUT \
                  -H "Content-Type: application/xml"
         ...
)
Run Code Online (Sandbox Code Playgroud)