JenkinsのビルドをAPIから削除する。
週末ぬくぬく休んでいる間に仕事でつかっているJenkinsのサーバの環境がおかしくなったらしく、git cloneができないとかいうエラーが大量に発生していた。5分おきにポーリングしていたので、数百のエラービルドが。。。
ビルド履歴をいじるのはどうなのよという話もあるが、全部同じエラーなので情報としてはまったく価値が無いので削除することにした。UIで一個ずつ削除するのは馬鹿らしすぎてやってられないので、APIから削除してみる。
Remote Access APIなるものがあるということは知っていたので、ここを見てみる。
https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API
あんま情報ないけど、RESTならDELETEなげればいけるかなぁと思って投げてみる。
curl --basic --user hogehoge:hugahuga -v -3 -x DELETE 'https://ci.myproject.com/job/myjob/250 -d 'token=foobar'
302が返ってきて消えたかなと思ったけど消えてなかったorz
ためしにUIから削除してみると
POST https://ci.myproject.com/job/myjob/250/doDelete を投げていることがわかった。
Chromeの開発ツールは便利ですね。
curl --basic --user hogehoge:hugahuga -v -3 -x POST 'https://ci.myproject.com/job/myjob/250/doDelete' -d 'token=foobar'
で無事削除できた。応答は302が返ってきます。
(token はJenkins側のビルドの設定から設定します。)
あとは大量に発生した失敗ビルドをループまわして消すだけ。
ビルド番号20-249を消すなら
for i in `seq 20 1 249` do curl --basic --user hogehoge:hugahuga -v -3 -x POST "https://ci.myproject.com/job/myjob/$i/doDelete" -d 'token=foobar' done