この記事は SmartDrive Advent Calendar 2017の14日目の記事です。
こんにちは、SmartDriveでフロントエンドエンジニアをしている@kefi3104です。
Changelogの更新、めんどくさいですよね?
今日はGitHub Changelog Generatorを使ったChangelogの自動化をやってみたので、その簡単な手順をご紹介します。
GitHub Changelog Generatorとは
GitHub上のタグやマージ済みのプルリク、Issue、ラベルを利用してChangelogを自動で生成してくれるgemです。
つまり、GitHubにコミットしている内容からChangelogを勝手に作ってくれるので、Changelogの更新で消耗しなくて済むというわけです!
準備
**GitHub Changelog Generator**をgemでインストールします。
$ sudo gem install github-changelog-generator
**GitHub token**を取得します。
scopeはrepoのみ選択します。
取得したtokenを環境変数に設定します。
export CHANGELOG_GITHUB_TOKEN="取得したGitHub token"
作業ディレクトリでのsourceも忘れずに
$ source ~/.bash_profile
ここまでで準備完了です。
Changelog更新
準備ができたら、以下のコマンドで生成開始です!
github_changelog_generator -u <ユーザー名> -p <プロジェクト名>
以上で、しばらく待てばChangelogが自動で生成されます!すごく簡単ですね!
出力内容のカスタマイズ
デフォルトでは**サンプル**のようなChangelogが吐き出されます。
変更内容がいくつかの区分に分けられていますが、これらはプルリクに設定したラベルに基づいています。
デフォルトでは、
- **Implemented enhancements:**は「enhancements」ラベル
- **Fixed bugs:**は「bug」ラベル
- **Merged pull requests:**は上記ラベル以外(除外設定されているものを除く)
が割り当てられています。
これらは、.github_changelog_generator
をプロジェクトのルートディレクトリに作成し、オプションを記述することで変更が可能です。
例えば、私は以下のようなオプション設定を行っています。
pr-label=### Added
enhancement-label=### Changed
bugs-label=### Fixed
enhancement-labels=enhancement,change
bug_labels=bug,hotfix
exclude-labels=release
unreleased-label=Unreleased
オプション設定によって以下のように変更しました、
-
pr-label
によってMerged pull requests:をAddedに -
enhancement-label
によってImplemented enhancements:をChangedに -
bugs-label
によってFixed bugs:をFixedに
他にも、enhancement-labels
やbug_labels
で該当するラベルを設定することで、変更内容を好きな区分に振り分けることができます。
また、私はmaster
へのプルリクをAddedに入れたくなかったので、リリース系のプルリクには「release」ラベルを割り振ってexclude-labels=release
としました。
GitHub Changelog Generatorを導入してみて
今日のリリースで早速使用してみました!すごく便利!
が、ラベルを設定していなかったプルリクが多かったので、改めてラベルを振る作業が必要に
とはいえ、リリース内容の管理の一環として、プルリクにきちんとラベル振るようになったのは良かったと思っています。
これでChangelogの生成が自動化されたので、今度は**gh-release**辺りとうまく組み合わせて、リリース作業を自動化してみたいと思います。