GitHubとHerokuの組み合わせでCron for GitHub

tl;dr

  • GitHubとHeroku Schedulerの組み合わせでCron for GitHubを実現する
  • Deploy
GitHub branches
cron-for-githubの実行結果イメージ

使い道

  1. たとえば、毎日ping/ のbranchを生成しておく。
  2. CI用のスクリプトには、ping/ 以下のbranchのビルドだったらこれこれする、と条件を書く。
  3. 完成!

はじめ方

  1. cron_for_github-appDeploy からherokuにデプロイ。
  2. cronを使いたいリポジトリがprivateならrepo, publicならpublic_repogithub access tokenを発行
  3. GITHUB_ACCESS_TOKEN にそれを設定。
  4. このコマンドを実行できるようになる。
cron-for-github ping --slug=YOU/YOUR_REPO
  1. Heroku Schedulerで定期実行。
heroku scheduler
heroku schedulerの設定イメージ

コマンドのオプション詳細は cron_for_github gemのreadme参照。

オススメ設定

このままだと、いっぱいブランチが作られていくママなので、

bundle exec cron-for-github clear --slug=YOU/YOUR_REPO --verbose && bundle exec cron-for-github ping --slug=YOU/YOUR_REPO --verbose

こんな感じに実行して、pingする前にclearするとよい。 verboseオプションつけるとそれなりにログが出る。 そして、それをnewrelicやlogentriesなど、ふつうのherokuアプリのように監視する。

demo

CircleCIで確認してます。 10分おきに起動したらたくさんbranchできたので、今は1日1回起動中。 TravisCIでも動くはず。

.travis.yml

branches:
  only:
    - master

している場合は

branches:
  only:
    - master
    - /^cron_for_github\/.*$/

など、自分の設定に合わせて要修正。

まとめ

  • GitHubとHeroku Schedulerの組み合わせでCron for GitHubを実現する
  • Deploy

使ってみたをブログやqiitaに書いてもらえると助かる!フィードバックください!! 多分他にも使いみちがありそう。 詰まったら聞いてください。このサイトやREADMEなどに反映します。 ruby-cron_for_github-appruby-cron_for_githubにスターください!


参照