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 の作り方の勉強になったので作って良かったです。