Jenkins で特定の JOB を一括で、無効化/有効化したかったのですが、それらしいプラグインとかツールが見つからなかったので、 Hubot スクリプトにしてみました。
仕組み
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、かつ、正規表現マッチには使用しないものとして定義可能です。