この記事は CircleCI Advent Calendar 2015 - Qiita の21日目の記事です。
これまでの歌詞添削フロー
僕はプログラマーをやる傍ら、音楽活動をやっています。
最近は作詞作曲に手を出し始めているんですが、作詞に関してはボーカルの先生のレビューがあります。
歌詞はGithubのプライベートリポジトリで管理していて、その先生には毎週あるボーカルレッスンの際に歌詞を見ていただいています。
しかし、毎週ボーカルのレッスンまでレビューを待ってると、歌詞作成から時間がかるし、スピード感が出ません。 やっぱりレビューはオンライン! そしてフローも自動化!
それってCircleCIできるよ!
要件
まあ一般的なソースコードレビューのフローですね。
本当はSlackとかに登録してもらえば一番楽なのですが、先生にはGithubすら登録してもらうのが申し訳ないくらいなので、 とりあえず今回はレガシーですがメールで通知する形にしますw 全体の動きとしては以下のとおりです。
- Githubに歌詞をpush
- CircleCIが実行される
- mailutilsをinstallしてmailコマンドで先生にレビューを依頼
- 先生がPull Requestにコメントをすれば自分専用のSlackを通じて通知される
- 歌詞を直して再度push
- レビュー(を繰り返す)
実装
まずはcircle.yml
を準備します。
なんか上のほうが繁盛していますが、やってることは以下です。
はじめに、mailutilsをインストールしようとすると、postfixがインストールされるのですが、 インストール時に設定確認が行われるので、CircleCIだと処理が止まります。
なので、preseed
を用いた自動化をしましょう。
CircleCIを使いこなすには、そこそこの自動化スキルが必要ですが、
あえてCircleCIを選択することによって、自分の自動化スキルをあげるのです
( ・´ー・`)どや
次に、幾つか環境変数が用いられていると思いますが、CircleCIに限らず、センシティブなデータは全部環境変数にしてしまいましょう。
環境変数にしておけばセキュリティリスクを減らすことができます。
CircleCIにおける環境変数の設定は、
Project Settings -> Environment variables for リポジトリ
の箇所で設定できます。
今回は自分のGmailアドレス、パスワード、レビューしていただく先生のメールアドレスを環境変数にしています。
最後に、deployment
の箇所で、review/〜〜〜
のフォーマットに合うブランチへのpushの場合にメールを送信します。
このようにブランチ名に規則性をもたせることで、自分の作業上ブランチ名をある程度自由に設定することができ、無駄なビルドが走ることもありません。
これで楽しい楽しいレビューフローの出来上がりです!
先生!!!(`;ω;´)
TODO
今回時間がなくてできませんでしたが、やれなかったことを書いてみました。
- メールの本文を日本語にする
文字化けしましたw - Pull Requestのリンクを貼り付ける
CircleCIからGithubのAPIを叩いて一緒にPRのリストを本文にリンク付きで入れるとかですかね - 先生向けのGithubのドキュメントを整備
まとめ
作業時間の殆どはpostfixまわりでハマったところでしたねw
ていうかSlackにも登録してもらえばいいんじゃないの!!!?
次はラスボスの id:a-yamada さんです。