之前有介紹過 Jenkins - Groovy 搜尋檔案,但 FileNameFinder
並不支援遞迴搜尋 (Recursively Search)。
所以我就直接用系統指令搜尋檔案,再用 Groovy 包裝成 Function,讓 Groovy 也能拿到遞迴搜尋檔案的結果。
本篇將介紹 Jenkins 的 Pipeline Job 透過 Groovy 遞迴搜尋檔案。
因我用的版本
eachFileRecurse
有 Bug 尚未修復,所以不得已才會用系統指令包裝。
(我是用Jenkins 2.60.2
版本及Pipeline: Groovy 2.38
版本)
Groovy Script
Jenkins 架在不同的作業系統,要使用不一樣的指令,以下提供 Windows 版及 Linux 版:
Windows 版本
1 | def recursiveSearch(path, pattern, func) { |
Linux 版本
1 | def recursiveSearch(path, pattern, func) { |
呼叫方法
1 | recursiveSearch(env.JENKINS_HOME, "conf*.xml") { fileName -> |
執行結果
授權執行
執行 Pipeline Job 後,若顯示失敗訊息:
1 | org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: ***** |
可以參考解法 Jenkins - Groovy RejectedAccessException