semantic-releaseによる自動Changelog生成
semantic-releaseでCHANGELOG.mdファイルを自動作成・管理するための設定。@semantic-release/changelogと@semantic-release/gitを使用してchangelogをリポジトリにコミットバック。
Basic Configuration
詳細な説明
自動CHANGELOG.md生成
semantic-releaseワークフローにchangelogを追加するには、ファイルを生成する@semantic-release/changelogとリポジトリにコミットバックする@semantic-release/gitの2つの追加プラグインが必要です。
設定
{
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["@semantic-release/changelog", {
"changelogFile": "CHANGELOG.md"
}],
"@semantic-release/npm",
"@semantic-release/github",
["@semantic-release/git", {
"assets": ["CHANGELOG.md", "package.json", "package-lock.json"],
"message": "chore(release): ${nextRelease.version} [skip ci]"
}]
]
}
プラグインの順序が重要
配列内のプラグインの順序は重要です:
- commit-analyzer はリリースタイプを決定するため最初に来る必要があります
- release-notes-generator はchangelogとgithubの両方で使用されるノートを生成します
- changelog は生成されたノートを使用してCHANGELOG.mdを書き込みます
- npm はpackage.jsonのバージョンを更新します
- github はGitHubリリースを作成します
- git は最後に来る必要があります — 前のプラグインによるすべてのファイル変更をコミットします
[skip ci]コミットメッセージ
コミットメッセージテンプレートには[skip ci]が含まれており、changelogコミットが別のCIランをトリガーして無限ループを作成することを防ぎます。
Changelogフォーマット
生成されるCHANGELOG.mdはKeep a Changelog規約に従い、バージョンごとにグループ化され、コミットタイプでソートされます。
ユースケース
ドキュメント目的でリポジトリに永続的なCHANGELOG.mdを必要とするプロジェクト、changelogを表示するパッケージレジストリ、またはコンプライアンスと監査証跡のために変更履歴が必要なチーム向け。