2017-05-25 73 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

相關問題