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