CircleCIを使ってbundle updateを定期実行する - Qiita

こちらの「1. CircleCIを起動する」のシェルスクリプトをRubyスクリプ
トにしてみました。Herokuボタンで簡単に設置できます。

◆ci-build-triggerの解説

やっていることは単純で、build_parametersに{BUNDLE_UPDATE: true}を
指定して、CircleCIのビルドを実行しているだけです。BUNDLE_UPDATEは
後述するcircle.ymlで参照します。

Herokuボタンをクリックしたら、App NameやEnvを設定してください。

CIRCLECI_TOKEN Envは、CircleCIのProject Settings -> API
PermissionsからScopeがallなtokenを作成します。

EXEC_DAYS Envは実行する曜日です。Heroku Schedulerは実行間隔を
「Daily」「Hourly」「Every 10 minutes」からしか選べません。さすが
に毎日のbundle updateは必要ないので、「Daily」を選択しつつスクリプ
トの中でこの環境変数を参照するようにしました。

カンマ区切りで1つまたは複数の曜日を指定することが出来ます。指定が
なければ毎日CircleCIをビルドします。

Sun
Mon,Wed,Fri

あとはHeroku Schedulerを設定するだけで、CircleCIのビルドを自動実行
できます。

◆CircleCIの設定

前述の記事に書いてあるとおりですが、circle.ymlの中で、
BUNDLE_UPDATEがtrueの時だけ処理が切り替わるようにしました。

[2015-01-15-1] のcircle.ymlはこのように変わりました。

※ circle.ymlのpre,override,postはよく忘れるので、リンクを張ってお
きます。 https://circleci.com/docs/configuration

あとはここでGitHubのtokenを作成 し、CircleCIのProject Setting ->
Environment variablesにGITHUB_ACCESS_TOKENという名前で追加するだけです。

◆まとめ

CircleCIを起動するRubyスクリプトを作成し、Heroku Buttonでインストー
ル可能にしました。bundle updateが必要な数だけHerokuアプリを作成し、
必要なくなったら捨てれば良いので、メンテナンスコストが少なく済みます。

追記(2015-01-25):
https://github.com/masutaka/ci-build-trigger 自体のbundle updateは
http://tachikoma.io を使うことにしました。外部サービス使えたら使う
に越したことはないですよね。