[Jenkins] 找出 Jenkins 上,腳本包含特定字串的任務 (job)

[Jenkins] 找出 Jenkins 上,腳本包含特定字串的任務 (job)

今天發現某個 Jenkins 任務 (job) 的 script 腳本有點問題,

修正好之後,想找找看有沒有其他任務存在類似的問題,

可是… 要怎麼找呢?

在 Jenkins 裡的搜尋,似乎只能找任務的名稱…

 

在不安裝外掛的情況下,可以 ssh 進 Jenkins 機器,

進到 Jenkins 的工作目錄 (像我的是在 /var/lib/jenkins/jobs),

再用 grep 來搜尋所有的 config.xml~

 

舉例來說,下面的例子是找出所有寫到 ls-remote 這個字串的 Jenkins 任務:

[root@localhost jobs]# fgrep ls-remote */config.xml */jobs/*/config.xml

MergePR/config.xml:git ls-remote > "${GIT_REMOTE_OUTPUT}"
New/jobs/Build/config.xml:git ls-remote | fgrep /pull/ > "${GIT_REMOTE_PULLS_CURR}" || true

 

至於為什麼是 */config.xml 和 */jobs/*/config.xml 呢?

假設任務直接就是在第一層級的話 (像本例中的 MergePR),

那麼 config.xml 就會是在 MergePR/config.xml。

 

但假若任務是在一個子目錄下 (第二層級),

像本例中的 New 目錄下的 Build 任務,

它的 config.xml 就會是在 New/jobs/Build/config.xml。

因此用 */config.xml 和 */jobs/*/config.xml,

可以把第 1~2 層級的任務 config.xml 都找出來。

 

當然嫌麻煩的話,可以讓 grep 直接找整個目錄,

不過那樣會去找很多不相關的檔案,速度就會慢很多囉~

(本頁面已被瀏覽過 17 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料