こんにちは。ROBOT PAYMENTでエンジニアをしているtakamoriです。 私が所属しているチーム(以下、マイページチーム)では、請求先マイページ機能を開発しており、先日、CHANGELOG生成ツールとしてlerna-changelogを導入しました。そこで今回は、lerna-changelogの導入方法を書いていきたいと思います。
lerna-changelogとは
Lerna が 開発しているプルリクベースの変更ログ生成ツールです。 主に以下の機能を提供しています。 - GItHubレポジトリの指定タグ間のプルリクを収集 - プルリクに設定したラベルを基に変更ログとして出力
変更ログとして出力したいラベルは、事前に設定ファイルに書き込むことで自由に変更することも可能です。 デフォルトでは、breaking / enhancement / bug / documentation / internal が設定されています。
lerna-changelogの導入
インストール
lerna-changelogをnpmコマンドを利用してインストールします。
npm install -D lerna-changelog
レポジトリの設定
lerna-changelogではrepository設定が必要になります。 package.jsonにrepositoryの記載がなければ追加します。
{ ..., // 省略 "repository": { "type": "git", "url": "https://github.com/${org_name}/${repo_name}.git" } }
ラベルの設定
CHANGELOGとして出力したいラベルをpackage.jsonに設定します。
changelog/labelsに、"GitHubラベル名": "CHANGELOGへ記載する見出し"
のフォーマットで記載します。
今回の例では、 Breaking / Feature / Bugfix / Refactoring の4つを設定しました。 設定しているラベル名については、GitHubのプルリクエストで設定しているラベル名と一致している必要があります。
{ ..., // 省略 "changelog": { "labels": { "Breaking": "💥 Breaking Change", "Feature": "🎉 New Feature", "Bugfix": "💉 Bug Fix", "Refactoring": "✨ Refactoring" } }, "repository": { "type": "git", "url": "https://github.com/${org_name}/${repo_name}.git" } }
GitHub Personal Access Token (PAT)の設定
lerna-changelogを実行するにはPATを環境変数に設定しておく必要があります。
PATの取得
PATの取得方法はGitHub公式のページを参照してください。
lerna-changelogのPATにはrepo
権限が必要です。
PATの設定
取得したPATを環境変数に設定します。 ローカル実行の場合はexportコマンドで、その他フレームワークを利用する場合はそのフレームワークの環境変数設定を参考にしてください。
export GITHUB_AUTH=${PAT}
lerna-changelogの実行
npxコマンドを利用して実行します。
npx lerna-changelog
オプション無指定の場合
最新タグからの変更ログが取得できます。
npx lerna-changelog
## Unreleased (2022-12-22) #### 💉 Bug Fix - [#610](https://github.com/my_org/my_repo/pull/610) Fix Module ([@user2](https://github.com/user2)) #### ✨ Refactoring - [#615](https://github.com/my_org/my_repo/pull/615) Refactor Module ([@user1](https://github.com/user1)) #### Commiters: 2 - user1 ([@user1](https://github.com/user1)) - user2 ([@user2](https://github.com/user2))
オプションを指定する場合
--from
, --to
を利用することにより、指定したタグ間の変更ログが取得できます。
npx lerna-changelog --from 0.1.0 --to 1.0.0
## 1.0.0 (2022-12-01) #### 🎉 New Feature - [#586](https://github.com/my_org/my_repo/pull/586) Add New Feature ([@user1](https://github.com/user1)) #### Commiters: 2 - user1 ([@user1](https://github.com/user1))
終わりに
lerna-changelogの導入方法の紹介でした。マイページチームではまだローカル運用となっているので、CI/CDへの組込みなどの課題は残っていますが、CHANGELOGが自動生成できるようになりかなりの手間が削減できました。 lerna-changelogはインストールから利用開始まで簡単に導入できますので、似た状況であれば導入を検討してみてください!
We are hiring!!
ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!
speakerdeck.com
www.robotpayment.co.jp
🎉twitter採用担当アカウント開設!🎉どんどん情報発信していきます!!