jenkins声明式pipe道 – 如何显示加特林结果?

我想要做的就是让Jenkins在Job页面的某处显示由Gatling模拟生成的HTML报告。

我正在使用Declarative Pipeline语法,并在Docker容器中运行Gatling。

这里是代码:

sh '''docker run -i -d --net=host --name gatlingAG ubuntu docker cp gatling gatlingAG:/ docker exec gatlingAG apt-get -qq update docker exec gatlingAG apt-get -qq install default-jdk docker exec gatlingAG /bin/bash -c "./gatling/bin/gatling.sh -m"''' 

模拟完成后,将在Docker容器内的TestResults / [name_of_simulation]文件夹中创build结果。

我似乎无法在互联网上find一个方法到达该文件夹,并在里面的index.html文件,以显示在jenkins的结果。 怎么做?

首先简单介绍一下使用Docker:

当Docker使用它来构build不可变的基础架构(即不改变的容器)的时候, 为此,Docker支持Dockerfile ,它允许您通过许多不同的步骤来构build容器,例如安装Gatling,并在启动时设置要在容器中运行的默认命令。

通过使用Dockerfile方法,您可以构build一个用于testing的Gatling容器,并且每当您的pipe道在Jenkins中运行时,就可以让您不必运行docker exec gatlingAG apt-get -qq updatetypes语句。 只是要考虑一下。

现在通过您的Jenkinspipe道来归档Gatling的输出。 有两种方法可以处理这个问题:

  1. 使用docker cp将结果从容器中复制到您的pipe道的Jenkins工作区中
  2. 将工作区安装到Gatling容器中,以便将结果直接写入工作区,并且可以轻松存档

1:使用docker cp

您已经使用docker cp将东西复制到容器中,所以您可以使用它在Gatling运行后再次将其复制回来。 你可以做这样的事情:

 sh '''docker run -i -d --net=host --name gatlingAG ubuntu docker cp gatling gatlingAG:/ docker exec gatlingAG apt-get -qq update docker exec gatlingAG apt-get -qq install default-jdk docker exec gatlingAG /bin/bash -c "./gatling/bin/gatling.sh -m"''' docker cp gatlingAG:/gatling/[name_of_run] . 

这将把容器文件系统的输出复制到你的工作空间文件系统,从那里你可以存档它(见答案的底部)。

2:将Jenkins工作区安装到容器中

Docker支持将主机上的文件系统挂载到任何运行的容器上。 通过这样做,容器中的进程可以将文件写入到更加可靠的存储或存储中,从而超过容器的寿命(只要您销毁容器,其文件系统将永远丢失)

再次,你可以用你的pipe道定义来做这样的事情:

 sh '''docker run -i -d --net=host -v $(pwd)/gatling:/gatling --name gatlingAG ubuntu docker exec gatlingAG apt-get -qq update docker exec gatlingAG apt-get -qq install default-jdk docker exec gatlingAG /bin/bash -c "./gatling/bin/gatling.sh -m"''' 

您会注意到,在运行容器时,我使用-v选项来告诉Docker将gatling目录挂载到/ gatling容器中。 这意味着您不需要复制它。而且,当Gatling运行时,结果将直接写入您的工作区,这意味着您可以轻松地将一个Gatling完成的归档。 在再次运行pipe道之前,可能需要确保从工作区中清除以前的Gatling运行的结果。

归档结果

最后,一旦在工作区中输出Gatling运行,您可以简单地使用归档 Jenkinspipe道指令对其进行归档 。 这将意味着Jenkins将HTML存储为工作的人工产物。 然后你可以通过你的浏览器直接访问HTML

https://jenkins-url/job/gatlin-job/1/artifact/TestResults/[name_of_simulation]/index.html