sanemat さんが作っている tachikoma という gem があります。tachikoma の機能は簡単に言うと「github の指定のプロジェクトで bundle update して、差分を pull request してくれる rake タスク」です。cron や jenkins などで定期的に実行するようにすると、依存する gem のバージョンを常に最新に保つことができます。べんり!
そんなべんりな tachikoma なのですが、ドキュメントが分かりづらくて損をしている気がします…><。すこしでも足しになるように、僕が作っている revenger というプロジェクト(github 上のプライベートリポジトリに置いてある)の tachikoma 設定手順をまとめましたのでご参考あれ。
前提
- github のプライベートリポジトリで管理してる
- jenkins サーバ上で定期実行する
この前提以外の方は適宜自分の環境に読み替えてください
準備
まず、 github で tachikoma 用のサブアカウントを作成します。別に作らなくても tachikoma は動かせるのですが、他人からの pull request でないと github の notification には現れません。そのへん気にならない方は作らなくても大丈夫です。
その後、サブアカウントの Personal Access Tokens を入手します。
上記画像の Create New Token をクリックすると入手できます。
次に、tachikoma のワーキングディレクトリを作ります。jenkins 上で実行させたいので、jenkins の workspace 配下にディレクトリを作っています。
cd /path/to/jenkins/workspace
mkdir revenger-tachikoma
Gemfile を作って bundle install します。--path はお好みで。
cd revenger-tachikoma
bundle init
echo "gem 'tachikoma'" >> Gemfile
bundle install --path vendor/bundle
次に下記のコマンドで tachikoma で必要なファイルを生成します。
bundle exec tachikoma init
実行すると下記のような出力が得られます。
appended .gitignore
appended Rakefile
created data/
created data/__user_config__.yaml
created data/bot-motoko-tachikoma.yaml
created repos/
created repos/.gitkeep
tachikoma init completed!
You might want to see README!
ここから設定ファイルを作っていきます。
まずは data/__user_config__.yaml
を編集します。ここでは pull request を送るユーザ情報と、pull request の文章を設定しています。僕は下記のように設定しています。
commiter_name:
'willnet-bot'
commiter_email:
'netwillnet+bot@gmail.com'
github_account:
'willnet-bot'
pull_request_body:
':hamster::hamster::hamster:'
次に data/revenger.yaml を作成します。もちろん "revenger" の部分はあなたのアプリの名前に変更してくださいね。ここではプロジェクト固有の設定を入れます。注意したいのは、リポジトリの url を https://
の scheme で書くこと。git@...
の方だといまのところうまく動かないはずです。
url:
'https://github.com/willnet/revenger.git'
type:
'private'
language:
'ruby'
version:
'2.0.0'
これでひとまず準備完了。下記のコマンドでちゃんと動くか確かめてみましょう。
BUILD_FOR=revenger TOKEN_REVENGER=サブアカウントのPersonalAccessToken bundle exec rake tachikoma:load tachikoma:fetch tachikoma:bundle tachikoma:pull_request
うまく動いたら jenkins 上で revenger-tachikoma というジョブをつくります。僕は下記のように設定して、毎朝7時に定期実行するようにしました。
試しにビルド実行してみて、うまく動いたら完了です。お疲れ様でした。楽しい bundle update ライフをお楽しみください。