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ライフを!