はじめに
チーム開発をしていて、レビュアーが足りなくて、レビュー待ちが発生することがあります。
そこで、レビュアーを増やすために、hubotにレビュアーを抽選&アサインさせてみようと思います。
せっかくなので、普通に動かすのではなくて、dockerでローカルでもクラウド(Heroku
)でも同じように動かします。
今回は、クラウド(Heroku
)編です。
前回のローカル編はこちら。
さっさと動かしてみたい人は、こちらのリポジトリを参照ください。
https://github.com/imunew/hubot-github-reviewer-lotto
レビュアー抽選のアイデアは、下記のスライドが元ネタになっています。
- Hubotレビュアーおみくじ @ githubkaigi // Speaker Deck
- sakatam/hubot-reviewer-lotto: A reviewer lottery script for Hubot
事前準備
- ローカルでhubot-github-reviewer-lottoを動かしてみる
- herokuにサインアップ
- Heroku CLIのインストール
セットアップ
heroku login
$ heroku login
▸ heroku-cli: update available from 6.9.3-f709986 to 6.11.2-2aff95b
Enter your Heroku credentials:
Email: user@example.com
Password: ********
Logged in as user@example.com
heroku create(アプリケーションの作成)
$ heroku create hubot-github-reviewer-lotto
Creating ⬢ hubot-github-reviewer-lotto... done
https://hubot-github-reviewer-lotto.herokuapp.com/ | https://git.heroku.com/hubot-github-reviewer-lotto.git
Heroku Container Registry and Runtime のインストール
Heroku
でDockerを使うには、Container Registry and Runtimeというプラグインを使います。
$ heroku plugins:install heroku-container-registry
Installing plugin heroku-container-registry... done
heroku-container-tools
は、deprecated
になっていますので、インストール済みの場合は、アンインストールしておいてください。
$ heroku plugins:uninstall heroku-container-tools
Container Registry にログイン
$ heroku container:login
Login Succeeded
コンテナをpush
$ cd /path/to/hubot-github-reviewer-lotto
$ cd heroku
$ heroku container:push hubot
この段階で、Heroku
にログインして確認してみると、hubot-github-reviewer-lotto
アプリが作成されています。
さらにクリックしてダッシュボードに遷移すると、container:push
したhubot
コンテナが表示されています。
環境変数を設定
config:set
コマンドで下記のように、環境変数をセットします。
REDIS_URL
については、後述します(セットしなくてOKです)。
$ heroku config:set HUBOT_GITHUB_TOKEN={Input your github token}
$ heroku config:set HUBOT_GITHUB_ORG={Input your github organization}
$ heroku config:set HUBOT_GITHUB_REVIEWER_TEAM={Input your github reviewer team}
$ heroku config:set HUBOT_GITHUB_WITH_AVATAR={Input use avatar flag}
$ heroku config:set HUBOT_SLACK_TOKEN={Input your slack token}
尚、WebのSettingsタブからも環境変数の設定が可能です。
.env
からコピペすることを考えると、コマンドからの設定が楽です。
Redis のセットアップ
こちらを参考にコマンドでAddonを追加することもできますが、WebのResourcesタブからも追加することが可能です。
Add-ons
の検索欄で、redis
と入力すると、下記のように候補がリストアップされるので、Heroku Redis
を選択します。
Planの確認ダイアログが表示されますので、デフォルトのHobby Dev - Free
のまま、Provision
ボタンをクリックします。
Provisionが完了すると、環境変数REDIS_URL
が自動でセットされます。
hubot コンテナの起動
コンテナをpushしただけでは、起動していないので、起動させます。
Overview
タブにある、Configure Dynos
というリンクをクリックします。
編集ボタン(鉛筆のマーク)をクリックすると、編集モードになります。
大変、分かりづらいのですが、ON/OFFのスイッチがあり、ONにすると下記のようになりますので、その状態でconfirm
ボタンをクリックします。
起動確認
右上のMore
のメニューから、View logs
を選択すると、ログページに遷移します。
ローカル編で動かしたときと同様に、
hubotを追加したSlackチャンネルにて、下記のようにコマンドを入力します。
{bot name} reviewer for {repository name} {PR Number}
Botから通知があれば、成功です。
おわりに
このhubot-github-reviewer-lotto
リポジトリをベースに、scripts/
ファイルを色々追加していって、自分専用のBotを作ってもらえたら幸いです。
また、hubot以外のWebアプリもHeroku+Container Registryで動かしてみたいですね。
ではでは。