uiureoさんが開発されたnpmのパッケージ, github-pr-release
が便利すぎて脳汁がドバドバ溢れでたので紹介します.
リリース時のチェックリスト
何かしらのリリースをする際, 大抵の場合「今回, どのような内容のリリースを行うのか?」についてチェックリストを作るのではないでしょうか.
そしてチェックリストを見ながら, ステージング環境などで動作確認を行い, リリースする内容が期待通り動作するかを確認したりするのではないでしょうか.
自分が開発に携わっているReactioの開発チームでは, これまでリリース時に手動でチェックリストを作っていたのですが, そもそも手動でチェックリストを作るということそのものが面倒ですし, 手動でチェックリストを作る場合, 本来リリースするのでチェックリストに入れるべき内容がチェックリストから漏れてしまう事があったりして, 非常に大変でした.
そこで, 上記のgithub-pr-release
を使って, リリース用のPull Requestを作るようにしてみました.
このパッケージは, 雑に言えばGithubのPull Requestをまとめて, リリース用のPull Requestをまとめてくれるやつです. 通常, Pull Requestは1つの機能や修正単位で作るので, それをまとめれば勝手にチェックリストになる! という訳ですね.
コード
release = require 'github-pr-release' apiToken = process.env.HUBOT_GITHUB_API_TOKEN release({ token: apiToken owner: 'our_organization' repo: 'OurService' head: 'master' base: 'production' template: "./template/release.mustache" }).then( (pullRequest) -> console.log('success!') ).catch( (err) -> console.log(err) )
非常に雑ですが, こういう感じのコードで動きます(Coffeescriptです).
これで, production
に対してmaster
をマージするようなPull Requestを作成することができます.
また, テンプレート(./template/release.mustache
)は, Reactioチームの場合次のようにしています.
Release {{version}} # リリース内容 {{#prs}} - #{{number}} {{title}} {{#assignee}}@{{login}}{{/assignee}}{{^assignee}}{{#user}}@{{login}}{{/user}}{{/assignee}} {{/prs}} # リリースチェックリスト - [ ] Assigneeがステージング環境で機能を確認 {{#prs}} - [ ] #{{number}} {{title}} {{#assignee}}@{{login}}{{/assignee}}{{^assignee}}{{#user}}@{{login}}{{/user}}{{/assignee}} {{/prs}} - [ ] プロダクトマネージャがステージング環境で機能を確認 {{#prs}} - [ ] #{{number}} {{title}} {{#assignee}}@{{login}}{{/assignee}}{{^assignee}}{{#user}}@{{login}}{{/user}}{{/assignee}} {{/prs}} - [ ] プロダクトマネージャにリリースしてもよいか確認
で, 実際にGithubでどういうふうに見えるかというと, こういう感じです(以前Sandboxリポジトリで試した古いPull Requestなので, 上記のテンプレートと出力が異なっています).
いい感じですね!
まとめ
というわけで, github-pr-release
, 非常に良かったです.
npmのパッケージになっているので, Hubotを使ったChatOpsとも相性が良いのもいいですね(実際, Reactioチームでも, Hubotからgithub-pr-release
を使ってPull Requestを作っています).
というわけで, 引き続きChatOpsなどやりつつ, 業務の改善, 自動化を進めていきたいと思っていますので, 学びや気付きをブログで公開できればいいなーと思っております.