リリースノート、チェンジログを自動で生成したいのでlerna-changelogを使った

デプロイする前にリリースタグを打つ運用をしているんですが、リリースノートに書く内容を自分で集めるのも面倒なので、みんな自動化してるやろと思って調べてみました。

conventional-changelog/conventional-changelog がポピュラーだけど、今回はコミットの列挙じゃなくてGitHubのプルリクエストを列挙したかったので要件に合わず。

tl;dr

lerna-changelogの方が動作がキビキビしてていいけど、PRにタグを打つのも面倒。

なので、下記のPRのforkをビルドしてnpmで公開しました。

www.npmjs.com

github-changelog-generator

github.com

  • Ruby
  • PRからCHANGELOG.mdを自動で生成してくれる
  • ラベルがなければ全部のPRを載せてくれる
  • ラベルが打ってあると、enhancement, bug fixなどでカテゴリを分けてくれる
  • 起動すると全部のPRを取得するので遅い
    • キャッシュはするけど、それでも遅い

lerna-changelog

github.com

上記のforkでmasterのHEADを取り込んでやるのが良さそう。やってみる。

github.com

やってみた。GitHub Packagesで公開してみましたが、利用する各位が.npmrcで利用するnpmリポジトリの設定とパーソナルアクセストークンの発行が必要なんですね。それだと使いにくいので結局npmでスコープつけて公開にしました。

www.npmjs.com

PRを閲覧する関係で、GitHubのPersonal Access Tokenが必要(必要権限はrepo)なので、 $ export GITHUB_AUTH=... で登録し、package.jsonにこんな設定を入れると、

  "changelog": {
    "labels": {
      "unlabeled": "PRs",
      "dependencies": "Dependabot"
    },
    "wildcardLabel": "unlabeled"
  }

こんな感じで標準出力に出してくれるので、 PRsとDependabotの所だけリリースタグを打つときのリリースノートに入れるのが便利かなと。

yarn run v1.22.5
$ /home/runner/work/sandbox/sandbox/node_modules/.bin/lerna-changelog

## Unreleased (2021-03-09)

#### PRs
* [#6](https://github.com/shrkw/sandbox/pull/6) escape line feed character ([@shrkw](https://github.com/shrkw))

#### Dependabot
* [#100](https://github.com/shrkw/sandbox/pull/100) Bump @types/react from 17.0.2 to 17.0.3 ([@dependabot-preview[bot]](https://github.com/apps/dependabot-preview))

#### Committers: 1
- Hiroyuki Shirakawa ([@shrkw](https://github.com/shrkw))
- [@dependabot-preview[bot]](https://github.com/apps/dependabot-preview)
Done in 0.83s.

タグを打ったあとに、 $ yarn run lerna-changelog --from=v1 --to=v2 に実行するのでも良い。