bauer's diary

凡人の凡人による凡人のための備忘録

Jenkinsの全ジョブに対して条件でフィルタリングするワンライナー

掲題の通りです。
業務で棚卸しするときに必要だったので手順をまとめておきます。

コマンド中の "/var/lib/jenkins/jobs" は、
それぞれの環境に合わせてJenkinsのジョブ直下を指定してください。

disabled一覧

不要なジョブを整理するためにdisabledのフラグと共に出力しました。
そのままExcelスプレッドシートに貼り付けるために、ジョブ名とdisabledの間はタブで区切っています。

find /var/lib/jenkins/jobs/*/config.xml -print0 | xargs -0 grep -o "\<disabled\>.*" | sed -e 's/\/var\/lib\/jenkins\/jobs\///g' -e 's/\/config.xml:\<disabled>/\t/g' -e 's/<\/disabled>//g'

findに "-print0" オプション、xargsに "-0" オプションをつけることで、
ジョブ名にスペースが含まれていると別々なものとして認識してしまう問題を回避するため、
区切り文字をスペースから"\0"に変更しています。

※ disabled=trueだけ出力したい場合はこちら。

find /var/lib/jenkins/jobs/*/config.xml -print0 | xargs -0 grep "\<disabled>true" | sed -e 's/\/var\/lib\/jenkins\/jobs\///g' -e 's/\/config.xml:.*\<disabled>/\t/g'

displayName一覧

ジョブの表示名称も一緒に出力したいときに使いました。

find /var/lib/jenkins/jobs/*/config.xml -print0 | xargs -0 grep -o \<displayName\>.* | sed -e 's/\/var\/lib\/jenkins\/jobs\///g' -e 's/\/config.xml:<displayName>/\t/g' -e 's/<\/displayName>//g'

Linuxでpbcopy的な動きを実現する

ここからは少し余談になりますが、上記のような結果をクリップボードに入れたくなるのが常で、
Mac OS ではクリップボードにコピーするためにpbcopyができたのですが、Linuxではどのようにやるのでしょうか。

$ cat hoge.txt | pbcopy

Ubuntuの場合、"xsel" というものを使ってこの動きを模倣できます。
標準インストールされてないので、インストールします。

sudo apt-get install xsel

下記の通り実行すれば、クリップボードにcatの結果が保存されます。

cat hoge.txt | xsel --clipboard --input

毎回オプション付きで実行するのは辛いので、
.bashrcにエイリアスを定義しておきます。

alias pbcopy='xsel --clipboard --input'


以上です。素敵なJenkinsライフを!