使用 Pipeline 執行 Maven 測試專案

Kenneth Wu
iCHEF
Published in
3 min readJul 1, 2019

暨上次『當 XCUITest 碰上 Pipeline之後,深刻感受到 Pipeline 的優點,之後一直計畫有空的時候將現行的 Maven 測試專案改成 Pipeline。

幾個月過去了,不意外的始終找不到有空的時候,直到某天進辦公室,發現測試環境整個崩壞,同時團隊還要做 CI 架構的調整。

原來,這就是有空的時候

於是開始進行將 Maven 測試專案轉移成 Pipeline 的工程。

首先,設定 Maven,在 Jenkins 設定的路徑如下

管理 Jenkins > Global Tool Configuration > Maven

也要在 Jenkinsfile 做對應的設定

tools {
maven 'MAVEN_HOME'
}

完成了 Maven 相關設定,接著是撰寫 Pipeline 腳本。

因為我們使用 TestNG 框架,在 pom.xml 指定測試相關的 XML 檔。

<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/test.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>

在 Pipeline 執行 Maven 專案只需要

mvn clean install

另外,在撰寫 Pipeline 腳本時,在將 global variable 設為 stdout 的值這個環節卡了一陣子,後來發現可以用以下的方式達成。

script {
MY_VAR = sh(
script: '''
//echo something
''',
returnStdout: true
)
}

最後,整個 Jenkinsfile 大概長成這樣

執行的結果

這次 CI 架構調整,將原本在 master 執行的測試專案,轉移到 slave 執行,除了測試環境需要重新建置,還有一些其它設定也要調整。

趁此機會,將測試專案轉成 Pipeline,逐步朝著 infrastructure-as-code 的方向前進,之後如果還有遇到類似的情況,相信可以比較無痛的應對。

下一個目標就是 dockerize。

--

--