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