mizdra's blog

ぽよぐらみんぐ

リリースノート自動生成テクニック

普段からいくつか趣味で作ったツールやライブラリを npm パッケージとして publish しています。ちょっと工夫していることとして、「できるだけ簡単に npm publish できるようにしておく」というものがあります。npm publish が心理的に、手順的に難しいと、すでに main ブランチに新機能や修正が入っているのに、npm publish されていない、という状況が発生しがちです。新機能や修正をすぐにユーザに送り届けられるよう、npm publish は無思考でできるようになっていると嬉しいです。

その一環として、リリースノート (CHANGELOG) の自動生成というのをやっているので、その紹介をしてみます。本当は 6 月にやっていた Maintainer Month 期間 に間に合わせたかったのですが、とろとろしていたら 7 月になってしまった! まあ遅れたから公開しないのも勿体ないので気にせず公開します。

GitHub のリリースノートの自動生成機能を使う

github-changelog-generator とか、git-chglog とか、自動生成するツールはすでに色々あるのだけど、id:mizdra は最近 GitHub の「Automatically generated release notes」という機能を使っている。

まず事前準備として、.github/release.yml というファイルをリポジトリに commit しておきます。この label がついていたらこのグループに振り分ける、みたいな設定を書きます。

# .github/release.yml
# ref: https://github.com/mizdra/eslint-interactive/blob/ae140c92081f8fb5c6d2cc3368ed5b186529981f/.github/release.yml

changelog:
  exclude:
    labels:
      - 'ignore for release'

  categories:
    - title: Breaking Change
      labels: ['Type: Breaking Change']

    - title: Bug
      labels: ['Type: Bug']
    - title: Documentation
      labels: ['Type: Documentation']
    - title: Feature
      labels: ['Type: Feature']
    - title: Refactoring
      labels: ['Type: Refactoring']
    - title: Testing
      labels: ['Type: Testing']
    - title: Maintenance
      labels: ['Type: Maintenance']
    - title: CI
      labels: ['Type: CI']
    - title: Question
      labels: ['Type: Question']
    - title: Security
      labels: ['Type: Security']
    - title: Dependencies
      labels: ['Type: Dependencies']

    - title: Other Changes
      labels: ['*']

GitHub Release で新しい release のリリースノートを書くところにあるボタンを押すだけ。

youtu.be

これだけです。簡単!

細かい編集をしてから公開も可能

自動生成されたリリースノートはそのまま textarea に挿入されるので、textarea 上で手直しして、それから公開する、ということができるます。結構細かい調整をしたいことがあるので、こういうのができるのはありがたいですね。

youtu.be

グルーピング用のラベルは @azu/github-label-setup を使って用意すると楽

「Type: Dependencies」とか「Type: Security」とかは GitHub がデフォルトで用意しているラベルリストの中に入っていないので、自分で作ってやる必要があります。手で作ると結構面倒なので、id:mizdra@azu/github-label-setup というツールを利用して1コマンドで作ってます。

efcl.info

$ # 事前に @azu/github-label-setup をインストールしたり、envchain に GITHUB_ACCESS_TOKEN を保存しておく
$ npm i -g @azu/github-label-setup
$ ehvchain --set github GITHUB_ACCESS_TOKEN

$ # リポジトリルートへ移動
$ cd mizdra/eslint-interactive
$ # https://github.com/azu/github-label-setup#default-labels にあるラベルリストに変更
$ envchain github github-label-setup -A

オススメです。

最後に

Maintainer Month に合わせて色々な人がオープンソースのメンテナンスについて記事を書かれているので、是非読んでみてください。また普段オープンソースのメンテナンスをしている人は、なにか記事を書いてみて、普段の活動を振り返ったりすると、良い機会になると思います。

efcl.info

sosukesuzuki.dev

ポケットモンスター・ポケモン・Pokémon・は任天堂・クリーチャーズ・ゲームフリークの登録商標です.

当ブログは @mizdra 個人により運営されており, 株式会社ポケモン及びその関連会社とは一切関係ありません.