TL;DR
場所はどこでもいいけど、たとえばHerokuから、定期的にブランチを切ることで、webhookを起動させて、GitHubエコシステムを強制起動するコマンド及びgem。
使い方
毎日とか毎週とかHeroku Schedulerから定期実行出来る。Heroku Schedulerは10min/1hour/1day しか選べないが、例えばスクリプト側で、起動されたうちの月曜日の場合は、とか書けばいい。Githubが割とローレベルのapiを提供してくれているので、branch作ったりbranch消したりしてるのにgit clone不要。さくさく快適すぎる。
gemの機能は正確にはcreate branch for github, clear branches for github で、cronにするかどうかは、このgemの外側でどうつかうかなんだけど、名前のインパクト重視で、ひとまず cron for github。
appの使いかた面はこっちに書いた。
GitHubとHerokuの組み合わせでCron for GitHub – Saddler – checkstyle to anywhere
背景
ビルドを定期的にできればいいのに、という要望はtravis-ciに昔からあって、実現していない。
Nightly Builds – CircleCIがそれかと思ったら、これは
簡単な話が「外から環境変数を追加した上で、特定のブランチに対するテストを実行させる」機能
CircleCIを使ってbundle updateを定期実行する – Qiita
で、起動時にはcurlで起こしてやる必要があった。curlはどこから叩くんだっていう。
ciを定期的に叩きたい構想はしばらく前から持っていて、その一つの実現がTachikoma.io。でもTachikoma.ioが提供するのは Dependency Update as a Service 一つだけだった。これgithubのwebhook起点にすればいいのでは?という発想に気づいてからさくさくっと出来た。
自画自賛で神gem。更にCron for GitHubにHerokuデプロイボタンを付けたリポジトリも用意。tagsとか消したら死ぬ系のrefは消せないようにしてるけど、考慮漏れてたら追加は必要。
いやーpacksaddleプロダクト便利だなあ。
Tachikoma.io
のstraregy: none
相当のことが完全にできる上、スケジューラーで実行間隔指定、プルリクエストを送らないなどTachikoma.ioやtachikoma gemで指定しづらかったところが解消できる、完全上位互換ですね。