首页 文章

Jenkins Declarative Pipeline - 如何显示Gatling结果?

提问于
浏览
0

我想要做的是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]文件夹中创建 .

我似乎无法在互联网上找到一种方法来访问该文件夹,并在其中的index.html文件中显示Jenkins中的结果 . 怎么做?

1 回答

  • 0

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

    Docker闪耀的地方在于您使用它来构建不可变的基础架构,即容器不会发生变化 . 为此,Docker支持Dockerfile,它允许您通过许多不同的步骤构建容器,例如安装Gatling,并设置默认命令在容器启动时在容器中运行 .

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

    现在讨论通过Jenkins管道归档Gatling输出的问题 . 有两种方法可以解决这个问题:

    • 使用 docker cp 将结果从容器中复制回管道的Jenkins工作区

    • 将工作空间安装到Gatling容器中,以便将结果直接写入工作空间并轻松存档

    1: Using 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: Mounting the Jenkins workspace into the container

    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"'''
    

    你'll notice that I'm在运行容器时使用 -v 选项告诉Docker将gatling目录挂载到容器中的/ gatling . 这意味着你不需要复制它 . 当Gatling运行时,结果将直接写入你的工作区,这意味着你可以轻松地将它们归档一个Gatling已经完成 . 在再次运行管道之前,可能需要确保从工作区清除任何先前Gatling运行的结果 .

    Archiving the results

    最后,一旦在工作区中输出了Gatling,就可以使用archive Jenkins管道指令将其归档 . 这意味着Jenkins将HTML存储为作业的工件 . 然后,您可以通过浏览器直接访问HTML,例如

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

相关问题