mcpField
S
semantic-release

semantic-release

公式Agent-ready
github.com開発ツール24.1ksemantic-release3 週間前に更新
リポジトリ公式サイト

semantic-release について

semantic-release はコミットメッセージを分析して、バージョン番号の増分を自動決定し、チェンジログを生成し、npm などのレジストリにパッケージを発行します。CI/CD パイプラインと統合して、手動バージョン管理タスクを排除します。

主な機能

  1. 01コミットメッセージを解析してセマンティックバージョン増分を判定
  2. 02詳細なチェンジログとリリースノートを生成
  3. 03npm と GitHub Releases へのリリースタグ付けと発行を自動化
  4. 04複数のリリースチャネルとカスタムプラグインに対応
  5. 05ドライランモードで発行ステップをプレビュー

活用シーン

  1. 01CI/CD パイプラインに統合して完全自動のパッケージリリースを実行
  2. 02モノレポのパッケージ全体でバージョン管理を一貫性を保つ
  3. 03リリースワークフローにおける手動バージョン管理エラーを削減

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
npm install -D semantic-release

インストール後にsemantic-release --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
npx semantic-release --dry-run
02
npx semantic-release

詳細

📦🚀 semantic-release

バージョン管理とパッケージ公開を完全に自動化

GitHub Discussionsでコミュニティに参加 ビルドの状態 OpenSSF Scorecard semantic-release:angular

npmの最新バージョン npmのベータ版

semantic-release は、次のバージョン番号の決定、リリースノートの生成、パッケージの公開など、パッケージリリースのワークフロー全体を自動化します。

これにより、人間の感情とバージョン番号の直接的な結び付きをなくし、Semantic Versioning の仕様に厳密に従い、変更による影響を利用者に伝えます。

私たちを信じてください。ワークフローがより良いものに変わります。 – egghead.io

特長

どのように動作しますか?

コミットメッセージの形式

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 option

BREAKING 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 を使用するには、次のものが必要です。

ドキュメント

ヘルプ

バッジ

このバッジを README に含めて、パッケージが semantic-release を使用して公開されていることと、どのコミット規約に従っているかを知らせましょう。

semantic-release: angular

[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)

チーム

Gregor MartynusPierre VanduynslagerMatt Travi
Gregor MartynusPierre VanduynslagerMatt Travi

Alumni

Stephan BönnemannRolf Erik LekangJohannes Jörg SchmidtFinn PaulsChristoph Witzko
Stephan BönnemannRolf Erik LekangJohannes Jörg SchmidtFinn PaulsChristoph Witzko

Kill all humans

コメント