雖然測試是良好的持續交付管道的關鍵部分,但大多數人不但願篩選數千行控制檯輸出來查找有關失敗測試的信息,爲了使這更容易,Jenkins能夠記錄和彙總測試結果,只要你的測試運行器能夠輸出測試結果文件。Jenkins一般與junit
步驟捆綁在一塊兒,但若是你的測試運行器沒法輸出JUnit樣式的XML報告,則還有其餘插件能夠處理幾乎任何普遍使用的測試報告格式。node
要收集咱們的測試結果和工件,咱們將使用post
部分。segmentfault
Jenkinsfile (Declarative Pipeline) pipeline { agent any stages { stage('Test') { steps { sh './gradlew check' } } } post { always { junit 'build/reports/**/*.xml' } } }
腳本管道(高級):post
Jenkinsfile (Scripted Pipeline) node { try { stage('Test') { sh './gradlew check' } } finally { junit 'build/reports/**/*.xml' } }
這將始終抓取測試結果,讓Jenkins跟蹤它們,計算趨勢並報告它們,具備失敗測試的管道將標記爲「不穩定」,在Web UI中用黃色表示,這與「失敗」狀態不一樣,用紅色表示。測試
當存在測試失敗時,從Jenkins獲取構建的工件以進行本地分析和調查一般頗有用,Jenkins對存儲「工件」的內置支持使這變得切實可行,在執行管道期間生成的文件。gradle
這能夠經過archiveArtifacts
步驟和文件通配符表達式輕鬆完成,以下例所示:ui
enkinsfile (Declarative Pipeline) pipeline { agent any stages { stage('Build') { steps { sh './gradlew build' } } stage('Test') { steps { sh './gradlew check' } } } post { always { archiveArtifacts artifacts: 'build/libs/**/*.jar', fingerprint: true junit 'build/reports/**/*.xml' } } }
腳本管道(高級):插件
Jenkinsfile (Scripted Pipeline) node { try { stage('Test') { sh './gradlew check' } } finally { archiveArtifacts artifacts: 'build/libs/**/*.jar', fingerprint: true junit 'build/reports/**/*.xml' } }
若是在archiveArtifacts
步驟中指定了多個參數,則必須在步驟代碼中明確指定每一個參數的名稱 — 即artifacts
用於工件的路徑和文件名和fingerprint
來選擇此選項,若是你只須要指定工件的路徑和文件名,那麼你能夠省略參數名稱artifacts
— 例如archiveArtifacts 'build/libs/**/*.jar'
。code
在Jenkins中記錄測試和工件對於快速輕鬆地向團隊的各個成員呈現信息很是有用,在下一節中,咱們將討論如何告訴團隊成員咱們的管道中發生了什麼。xml