セマンティックリリースは、次のバージョン番号の決定、リリースノートの生成、パッケージの公開など、パッケージ全体のリリースワークフローを自動化します。
これにより、人間の感情とバージョン数の間の即時のつながりが削除され、セマンティックバージョンの仕様に厳密に続き、消費者への変更の影響を伝えます。
私たちを信頼してください、これはあなたのワークフローをより良く変えるでしょう。 - egghead.io
完全に自動化されたリリース
セマンティックバージョンの仕様を強制します
ユーザーはすぐに新機能と修正を利用できます
メンテナーとユーザーに新しいリリースを通知します
正式なコミットメッセージコンベンションを使用して、コードベースに変更を文書化する
GITの合併に基づいて、さまざまな流通チャネル(NPM Dist-Tagsなど)で公開
継続的な統合ワークフローと統合します
手動リリースに関連する潜在的なエラーを避けてください
プラグインを介してパッケージマネージャーと言語をサポートします
共有可能な構成によるシンプルで再利用可能な構成
githubアクションに関する署名された証明を介して供給チェーンセキュリティの増加を促進するNPMパッケージの起源のサポート
セマンティックリリースは、コミットメッセージを使用して、コードベースの変更の消費者への影響を判断します。コミットメッセージの正式な慣習に従って、セマンティックリリースは次のセマンティックバージョン番号を自動的に決定し、Changelogを生成し、リリースを公開します。
デフォルトでは、 Semantic-ReleaseはAngular Commit Message Rebentionsを使用します。コミットメッセージ形式は、 @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環境で実行されることを目的としています。このようにして、人間はリリースプロセスに直接関与しておらず、リリースは不ロマンチックで感傷的であることが保証されています。
リリースブランチのいずれかに追加された新しいコミットごとに(例: master
、 main
、 next
、 beta
)、 git push
を使用するか、プルリクエストをマージしたり、別のブランチからマージしたりすることにより、CIビルドがトリガーされ、 semantic-release
が実行されますパッケージ機能に影響を与える最後のリリース以来、コードベースが変更されている場合にリリースするコマンド。
Semantic-Releaseは、公開されたリリースのタイミング、コンテンツ、視聴者を制御するさまざまな方法を提供します。次のレシピのワークフローの例を参照してください。
流通チャネルを使用します
メンテナンスリリース
リリース前
テストを実行した後、コマンドsemantic-release
次の手順を実行します。
ステップ | 説明 |
---|---|
条件を確認します | すべての条件を確認して、リリースを続行します。 |
最後のリリースを取得します | Gitタグを分析して、最後のリリースに対応するコミットを取得します。 |
コミットを分析します | 前回のリリース以降に追加されたコミットに基づいて、リリースの種類を決定します。 |
リリースを確認します | リリースの適合性を確認します。 |
メモを生成します | 最後のリリース以来追加されたコミットのリリースノートを生成します。 |
gitタグを作成します | 新しいリリースバージョンに対応するGitタグを作成します。 |
準備する | リリースを準備します。 |
公開 | リリースを公開します。 |
通知します | 新しいリリースまたはエラーの通知。 |
セマンティックリリースを使用するには、次のことが必要です。
Gitリポジトリでコードをホストします
資格情報を安全にセットアップできる継続的な統合サービスを使用する
継続的な統合環境にインストールされているバージョン要件を満たすGitCLIバージョン
継続的な統合環境にインストールされているバージョン要件を満たすnode.jsバージョン
使用法
はじめる
インストール
CI構成
構成
プラグイン
ワークフロー構成
共有可能な構成
拡張
プラグイン
共有可能な構成
レシピ
CI構成
Gitホストサービス
ワークフローをリリースします
開発者ガイド
JavaScript API
プラグインの開発
共有可能な構成開発
サポート
リソース
よくある質問
トラブルシューティング
ノードバージョンの要件
ノードサポートポリシー
Githubの議論
スタックオーバーフロー
ツイッター
あなたのパッケージがセマンティックリリースを使用して公開され、どのコミットコンベンションがあなたのREADMEにこのバッジを含めることが続くかを人々に知らせてください。
[](https://github.com/semantic-release /セマンティックリリース)
![]() | ![]() | ![]() |
---|---|---|
グレゴール・マーティヌス | Pierre Vanduynslager | マット・トラヴィ |
![]() | ![]() | ![]() | ![]() | ![]() |
---|---|---|---|---|
ステファン・ベネマン | ロルフ・エリック・レカン | ヨハネスヨルグシュミット | フィンポールズ | クリストフ・ウィトコ |