Jenkins

如果 PHPUnit 失敗,Jenkins 建構未標記為不穩定/失敗

  • May 14, 2019

所以,標題幾乎暴露了它。我們將 Jenkins 2 與 PHPUnit 6.5.12 一起使用,幾天前,一切正常。現在,我們所做的每個建構以及在 PHPUnit 部分中出現故障(或更糟的是,錯誤)都不會被標記為不穩定/失敗。對於測試,我們使用 PHPUnit + Selenium Standalone 3.4.0 和最新的 geckodriver。(是的,有較新版本的 Selenium 可用,但它們總是會在異常情況下終止測試並且根本不執行 - 3.4.0 執行良好。)

我們執行單元測試的部分管道如下所示:

stage ('UnitTests') {
           steps {
               sh 'cd module/App/test/ && chmod a+r+w+x runtests.sh && ./runtests.sh'
           }
       }
   }
   post {
       success {
           slackSend  color: '#458B00', message: "Build success for Pipeline ${env.JOB_NAME} [#${env.BUILD_NUMBER}]"
           sh 'rm -rf \\"${WORKSPACE}/data/cache/*\\"'
           sh 'rm -rf ${WORKSPACE}/data/cache/*'
           sh 'rsync --delete -r "${WORKSPACE}"/* myhost:/path
       }
       failure {
          slackSend color: '#8C1717', message: "Build failed for Pipeline ${env.JOB_NAME} [#${env.BUILD_NUMBER}]"
       }
       unstable {
          slackSend color: '#FF8C00', message: "Build unstable for Pipeline ${env.JOB_NAME} [#${env.BUILD_NUMBER}]"
       }
   }

runtests.sh 本質上是啟動 PHPUnit 測試(以及 Selenium 獨立伺服器)並最終終止 Selenium 和所有剩餘的 Firefox 會話。

現在從我收集的資訊來看,PHPUnit 應該有一些退出程式碼,比如 1 代表失敗,0 代表成功等等。那麼,這裡發生了什麼事嗎?據我所見,沒有任何新版本出現。

我還讀到有人可能讓 PHPUnit 吐出一份報告,而 jUnit 又可以獲取該報告,然後用它來檢查一切是否正常,但正如我所說 - 它以前工作過,正是這種配置。

希望任何人都有一些想法,因為我肯定沒有。

您應該檢查 phpunit 和腳本的退出程式碼。Jenkins 在使用 sh 步驟時,只考慮整個腳本的退出程式碼,而不考慮其中的任何內容。也許以前因為沒有殺死工人而起作用?AFAIK 您談論的其他功能是由 JUnit 外掛提供的。

引用自:https://serverfault.com/questions/967222