Jenkins宣告式管道-如何显示Gatling结果?

3okqufwl  于 2022-12-11  发布在  Jenkins
关注(0)|答案(2)|浏览(155)

我想做的是让Jenkins在Job页面的某个地方显示Gatling模拟生成的HTML报告。
我使用声明性管道语法,并在一个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] 文件夹中。
我似乎无法在互联网上找到一种方法来访问该文件夹,以及其中的 index.html 文件,以便在Jenkins中显示结果。如何做到这一点?

nsc4cvqm

nsc4cvqm1#

这很容易做到。
在Jenkins构建结束时,添加一个构建后步骤,如下所示:

cd serviceModule
mvn clean test-compile gatling:test -Dtest.env=${ENV} -DDB.password=${PASSWORD} -Dtest.type=${TYPE} -Dusers=${users} -Dduration=${duration} -Dtest.hostname=${HOST} -Dtest.port=${PORT}

export REPORT_NAME=$(head -n 1 target/gatling/lastRun.txt)
echo $REPORT_NAME
ls target/gatling/$REPORT_NAME
cp -rf target/gatling/$REPORT_NAME target/gatling/HTMLReport

可能有几种方法可以做到这一点。如果您将结果文件夹(从Docker容器中)正确Map到Jenkins工作区,这将适用于Docker**。
然后,在该步骤之后,使用Jenkins“Public HTML Reports”插件从target/gatling/HTMLReport文件夹存档报告。
这就是我如何做空手道测试包在加特林。

ergxz8rk

ergxz8rk2#

首先,简单介绍一下Docker的使用方法:
Docker的亮点是当你用它来构建不可变的基础设施,即不改变的容器。为此,Docker支持Dockerfile,它允许你通过一些不同的步骤来构建容器,比如安装Gatling,以及设置容器启动时运行的默认命令。
通过使用Dockerfile方法,您可以构建一个用于测试的Gatling容器,这将使您不必在每次使用Jenkins运行管道时都运行docker exec gatlingAG apt-get -qq update类型语句。
现在来谈谈通过Jenkins管道存档Gatling输出的问题。有两种方法可以解决这个问题:
1.使用docker cp将结果从容器复制回管道的Jenkins工作空间
1.将工作空间装载到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支持将文件系统从主机挂载到运行在其上的任何容器中。通过这样做,容器中的进程可以将文件写入更可靠的存储器或超过容器寿命的存储器(一旦你破坏了容器,它的文件系统将永远丢失)
同样,您可以对管道定义执行类似以下操作:

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完成的文件夹中。您可能需要确保在再次运行管线之前,已从工作区中清除了任何先前Gatling运行的结果。

存档结果

最后,一旦你在工作区运行了Gatling的输出,你可以使用archive Jenkins pipeline指令将其存档。这意味着Jenkins将HTML作为作业的一个工件存储起来。然后你可以通过浏览器直接访问HTML,例如:
https://jenkins-url/job/gatlin-job/1/artifact/TestResults/[name_of_simulation]/index.html

相关问题