ぶるーすくりーん

ぽんこつプログラマ日記

Jenkins の JOB を一括で無効化する Hubot script を公開してみた

Jenkins で特定の JOB を一括で、無効化/有効化したかったのですが、それらしいプラグインとかツールが見つからなかったので、 Hubot スクリプトにしてみました。

npm package

仕組み

JOBの有効化/無効化が Jenkins で公開している Rest API に見当たりませんでした。
なので、Jenkins 上でボタンぽちぽちしながら確認したところ、以下のリクエストで有効化/無効化のリクエストを送信できるようです。

$ curl -XPOST http://127.0.0.1/jenkins/job/test1/disable -H "Basic {auth}"

また、Basic 認証用のヘッダは、以下のようにして生成できます。

'Basic ' + new Buffer(process.env.HUBOT_JENKINS_USER_NAME + ':' + process.env.HUBOT_JENKINS_PASSWORD).toString('base64')

以上を組み合わせて有効化/無効化のリクエストを実行するスクリプトです。

また、スクリプトの呼び出し方法は、READMEでは、 jenkins job disableとしていますが、省略してj j disableなどの呼び出しも可能にしてみました。

省略形でリッスンするための記述方法は↓

robot.hear /j(?:enkins)? j(?:ob[s]*)? (.*)/i, (msg) ->

(?:x) と記述することで、xは書いても書かなくてもOK、かつ、正規表現マッチには使用しないものとして定義可能です。

感想とか

Hubot スクリプト書いたの初めてだったのですが、本家の説明が丁寧でわかりやすかったです。
調子にのって他にもいろいろ書いてみたいです。

また、npm でモジュール公開するのも初めてで、内心ドキドキです。 変なとことか不具合、要望があれば、ご指摘ください。