JenkinsでCronジョブを定義するjenkins_cronを作ってみた
何年前の話題だよという感じですが、ふと Jenkins を Cron 代わりに使ってみようかなと思ったのですが、ブラウザの画面でポチポチするのはなんだかなーと思ったので、DSL を書いてそれを元に Jenkins の API を叩いて更新するというだけのモジュールを作ってみました。
使い方
こんなイメージ。config/jenkins.yml
に Jenkins サーバへの接続情報を書いておきます。
.
└── config
├── jenkins.yml
└── schedule
└── foo.rb
DSL はconfig/schedule/*.rb
という名前で、その中で job を定義していきます。
$ cat config/schedule/foo.rb
job :test1 do
command "whoami", user: "riywo"
timer every: 3.minute
end
ドキュメントはまだなので、なんとなくで雰囲気つかんでもらえれば。。。timer の部分は結構苦労して設計したので、興味ある方は見てもらえると。
あとはこれでコマンドを実行すると Jenkins サーバに job が登録されます。
$ jenkins_cron update foo
使い道
これから考えます。。。
と思ってたところで、altriaとかwhitesnakeを見つけたので、こちらの方がもっと洗練されてていいかもですね!
まとめ
DSL の作り方の勉強になったので作って良かったです。