2017-05-25 53 views
0

我想要做的就是让Jenkins在Job页面的某处显示由Gatling模拟生成的HTML报告。Jenkins声明性管道 - 如何显示Gatling结果?

我正在使用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"''' 

仿真完成后,其结果列于TestResults创建/ [name_of_simulation]文件夹中的搬运工容器内。

我似乎无法在互联网上找到到达该文件夹的路径,并在index.html文件里面显示Jenkins的结果。怎么做?

回答

0

首先只是用码头工人一个快字:

凡泊坞窗照是,当你用它来构建基础架构不变即容器不会改变。为此,Docker支持Dockerfile,它允许您通过许多不同的步骤构建容器,例如安装Gatling并设置启动时在容器中运行的默认命令。

通过使用Dockerfile方法,您可以构建一个用于测试的Gatling容器,并且每当您的管道在Jenkins中运行时,就可以让您免费运行docker exec gatlingAG apt-get -qq update类型的语句。只是需要考虑。

现在转入您通过Jenkins管道归档Gatling输出的问题。有迹象表明,你可以接近这个方式有两种:

  1. 使用docker cp将结果复制回从容器到詹金斯工作区,您的管道
  2. 安装工作区到加特林容器,这样的结果将写入直接到工作区,并可以很容易地存档

1:使用泊坞窗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:挂载詹金斯工作区到容器

泊坞支持安装从主机文件系统到运行其上的任何容器。通过这样做,容器中的进程可以将文件写入到更加可靠的存储或存储中,从而延长容器的寿命(只要您销毁容器,其文件系统就会永久丢失)

再次,您可以使用类似的方法您的管道定义:

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选项。这意味着您不需要复制它。另外,当Gatling运行时,结果将直接写入您的工作区,这意味着您可以轻松地将一个Gatling完成的归档。在再次运行管道之前,可能需要确保先前的Gatling运行结果已从工作区中清除。

归档结果

最后,一旦你有加特林的输出在您的工作空间运行,你可以简单地使用archive詹金斯流水线指令归档。这将意味着詹金斯将HTML存储为工作的人工产物。然后您可以通过浏览器直接访问HTML,例如

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

相关问题