The Pragmatic Ball boy

iOSを中心にやってる万年球拾いの老害エンジニアメモ

CHANGELOGの自動生成

リリースごとにCHANGELOGをもれなく書くのは結構な手間です。 そこでcommit時にコミットログとしてCHANGELOGを記載しておき、リリース時にそれをまとめて出力することでその手間を削減します。

conventional-changelogを使ってCHANGELOG.mdを生成する方法について記載します。

事前準備

  • Node.jsのインストール(詳細はここでは割愛)

  • conventional-changelogのインストール

$ sudo npm install -g conventional-changelog

プロジェクトの設定

package.jsonというファイルをプロジェクトのトップディレクトリに配置します。 そして、以下のように、package.jsonにname, version, respsitoryを記載します。

{
  "name": "SampleApp",
  "version": "1.2.0",
  "repository": {
    "type": "git",
    "url": "https://github.com/xxxx/xxxx"
  }
}

CHANGELOG情報のコミット

commitする際にCHANGELOGにのせる場合は、指定のフォーマットでcommitログ記載します。

angular, atomなど、プロジェクトによって独自のフォーマットが使われていて好みのものを利用します。

詳細はこちらを参照してください。 https://github.com/ajoslin/conventional-changelog/tree/master/conventions

CHANGELOGの生成

package.jsonを置いたのディレクトリ上で以下のコマンドを実行します。 (eslintのところはフォーマットによって変わります)

$ conventional-changelog -p eslint -i CHANGELOG.md -w

そうするとCHANGELOG.mdが生成されます。

ワークフロー

その後は、以下のようなワークフローでCHANGELOGを生成します。

  1. 変更をcommit
  2. package.jsonのversionを更新
  3. CHANGELOGを生成
  4. package.jsonCHANGELOG.mdをcommit
  5. git tagでtagづけする(このときv1.1.1といったようなタグ名でタグ付けします)
  6. git push

注意点としてはこのツールはgitのタグを見て差分をCHANGELOGに追加していくので、タグをつけるのを忘れないように