ROBOT PAYMENT TECH-BLOG

株式会社ROBOT PAYMENTのテックブログです

lerna-changelogでプルリクからCHANGELOGを生成する

こんにちは。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の設定

取得した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採用担当アカウント開設!🎉どんどん情報発信していきます!!