[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 直接找整個目錄,
不過那樣會去找很多不相關的檔案,速度就會慢很多囉~
(本頁面已被瀏覽過 321 次)