semantic-release について
semantic-release はコミットメッセージを分析して、バージョン番号の増分を自動決定し、チェンジログを生成し、npm などのレジストリにパッケージを発行します。CI/CD パイプラインと統合して、手動バージョン管理タスクを排除します。
主な機能
- 01コミットメッセージを解析してセマンティックバージョン増分を判定
- 02詳細なチェンジログとリリースノートを生成
- 03npm と GitHub Releases へのリリースタグ付けと発行を自動化
- 04複数のリリースチャネルとカスタムプラグインに対応
- 05ドライランモードで発行ステップをプレビュー
活用シーン
- 01CI/CD パイプラインに統合して完全自動のパッケージリリースを実行
- 02モノレポのパッケージ全体でバージョン管理を一貫性を保つ
- 03リリースワークフローにおける手動バージョン管理エラーを削減
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にsemantic-release --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
📦🚀 semantic-release
バージョン管理とパッケージ公開を完全に自動化
semantic-release は、次のバージョン番号の決定、リリースノートの生成、パッケージの公開など、パッケージリリースのワークフロー全体を自動化します。
これにより、人間の感情とバージョン番号の直接的な結び付きをなくし、Semantic Versioning の仕様に厳密に従い、変更による影響を利用者に伝えます。
私たちを信じてください。ワークフローがより良いものに変わります。 – egghead.io
特長
- リリースを完全に自動化
- Semantic Versioning の仕様を遵守
- 新機能や修正をすぐにユーザーへ提供
- 新しいリリースをメンテナーやユーザーに通知
- 定型化されたコミットメッセージ規約を使って、コードベースの変更を記録
- Git のマージに基づいて、さまざまな配布チャネル(npm dist-tags など)で公開
- 継続的インテグレーションのワークフローと統合
- 手動リリースに伴う潜在的なエラーを回避
- プラグインを介して、あらゆるパッケージマネージャーと言語に対応
- 共有可能な設定による、シンプルで再利用可能な設定
- GitHub Actions で署名付き証明書を使用し、サプライチェーンのセキュリティ強化を促進するnpm パッケージの来歴証明に対応
どのように動作しますか?
コミットメッセージの形式
semantic-release は、コードベースへの変更が利用者に与える影響を判断するために、コミットメッセージを使用します。 形式化されたコミットメッセージの規約に従うことで、semantic-release は次のセマンティックバージョン番号を自動的に判断し、変更履歴を生成してリリースを公開します。
デフォルトでは、semantic-release はAngular のコミットメッセージ規約を使用します。
コミットメッセージの形式は、@semantic-release/commit-analyzer プラグインと@semantic-release/release-notes-generator プラグインのpreset または config オプションで変更できます。
commitizen やcommitlint などのツールを使うと、コントリビューターを支援し、有効なコミットメッセージを徹底できます。
以下の表は、semantic-release の実行時(デフォルト設定の場合)に、どのコミットメッセージがどのリリース種別になるかを示しています。
| コミットメッセージ | リリース種別 |
|---|---|
fix(pencil): stop graphite breaking when too much pressure applied | |
feat(pencil): add 'graphiteWidth' option | |
perf(pencil): remove graphiteWidth optionBREAKING CHANGE: The graphiteWidth option has been removed.The default graphite width of 10mm is always used for performance reasons. | ( BREAKING CHANGE: トークンはコミットのフッターに記述する必要があります) |
CI による自動化
semantic-release は、リリースブランチでビルドが成功するたびに、CI 環境で実行することを想定しています。 こうすることで、リリースプロセスに人が直接関わることがなくなり、リリースが気取らず、感傷的でないことが保証されます。
リリースのトリガー
リリースブランチ(例:master、main、next、beta)に新しいコミットが追加されるたびに、git push、プルリクエストのマージ、または別のブランチからのマージによって、CI ビルドがトリガーされ、semantic-release コマンドが実行されます。前回のリリース以降に、パッケージの機能に影響するコードベースの変更がある場合、リリースが作成されます。
semantic-release では、公開するリリースのタイミング、内容、対象者をさまざまな方法で制御できます。 次のレシピでワークフローの例をご覧ください。
リリースの手順
テストの実行後、semantic-release コマンドは次の手順を実行します。
| 手順 | 説明 |
|---|---|
| 条件の検証 | リリースを進めるためのすべての条件を検証します。 |
| 前回のリリースの取得 | Git タグを分析して、前回のリリースに対応するコミットを取得します。 |
| コミットの分析 | 前回のリリース以降に追加されたコミットに基づいて、リリースの種類を決定します。 |
| リリースの検証 | リリースが要件に適合していることを検証します。 |
| リリースノートの生成 | 前回のリリース以降に追加されたコミットのリリースノートを生成します。 |
| Git タグの作成 | 新しいリリースバージョンに対応する Git タグを作成します。 |
| 準備 | リリースを準備します。 |
| 公開 | リリースを公開します。 |
| 通知 | 新しいリリースまたはエラーを通知します。 |
要件
semantic-release を使用するには、次のものが必要です。
- コードをGit リポジトリでホストすること
- 認証情報を安全に設定できる継続的インテグレーションサービスを使用すること
- 継続的インテグレーション環境に、バージョン要件を満たす Git CLI をインストールすること
- 継続的インテグレーション環境に、バージョン要件を満たす Node.js をインストールすること
ドキュメント
- 使い方
- 基礎
- 拡張
- レシピ
- 開発者ガイド
- サポート
ヘルプ
バッジ
このバッジを README に含めて、パッケージが semantic-release を使用して公開されていることと、どのコミット規約に従っているかを知らせましょう。
[](https://github.com/semantic-release/semantic-release)
チーム
![]() | ![]() | ![]() |
|---|---|---|
| Gregor Martynus | Pierre Vanduynslager | Matt Travi |
Alumni
![]() | ![]() | ![]() | ![]() | ![]() |
|---|---|---|---|---|
| Stephan Bönnemann | Rolf Erik Lekang | Johannes Jörg Schmidt | Finn Pauls | Christoph Witzko |







