web3.jsプロジェクトは、semver 2.0.0 仕様に従っています。
メジャーバージョンは、Breaking Changeが導入された時点で増加させなければなりません。breaking changeの定義は、依存するプロジェクトがコードベース、ビルドパイプライン、またはテストを更新する必要があるものです。
Minor
は、新しい小さな機能が導入されるとすぐに増やされます。マイナーリリースは、依存するプロジェクトに影響を与えません。このようなリリースでは、プロジェクトが使用できる小さな拡張や機能のみが導入されます。
パッチリリースは、必要なバグフィックスのみを含み、依存するプロジェクトに影響を与えるリスクは低くなっています。
バージョン管理の詳細については、semver 2.0.0 仕様書 に従ってください。
- リリースは
RC
バージョンとして、以下の指定されたトラックでリリースされる必要があります。 - マイナーな
RC
バージョンはテスト用にmonth
の間だけリリースされます。 -
- リリースレビューの間、新しい変更が提案され、承認され、マージされない限り、コードは凍結されます。
-
- 変更は新しい
RC
リリースをトリガーし、レビュアーが新しい変更をテストするために必要な時間を確保するために、リリースクロックをweek
にセットする必要があります。
- 変更は新しい
-
- プロジェクトリーダーは
RC
を Node プロジェクトと公開されたバンドルに対して、ブラウザーのコンテキストで手動でテストします。 minified bundle をブラウザコンテキストでテストします。外部のレビュアーは同じことを行ったかどうかを確認する必要があります。
- プロジェクトリーダーは
マイナーリリースはメジャーリリースのルールを継承していますが、テスト期間が1週間と短く、公開されたコードの変更に伴いリリースクロックが2日遅れます。
2019年11月以降、Web3はpatch
についてもminor
のルールに従っており、一連の壊れないリリースの確立に役立っています。
リリース候補は rc
トラックで公開され、もはやアクティブな開発中ではありません。リリース候補は semver 2.0.0 仕様 仕様で定義されているバージョン番号でリリースされます。
ベータ版リリースは beta
トラックで公開され、活発に開発が行われています。ベータ版リリースのバージョン番号は semver 2.0.0 ドキュメントで定義されているとおりです。
注意: このセクションはまだ決定されていないので、今のところ純粋に参考程度にお考えください。
より長い期間にわたって安全性を提供するために、LTS
とタグ付けされたバージョンを持つことが重要です。
| リリース|ステータス|イニシャルリリース|LTS スタート|エンドオブライフ | :-----: | :-----------: | :-------------: | :-----------: | :---------: | | 1.x | LTS | 24. 2017年7月|23. 2019年7月|未定|。 | 2.x|非推奨|13. Jul. 2019 | 13. Jul. 2019 | 13. 2020年7月 | 3.x|非推奨|9. 2021年4月|9. 2021年4月|26. 2022年1月 | 4.x|開発|2022年4月|TBD. | 未定です。 |
プロジェクトの開発中には常に壊れるような変更が行われるため、対応するのに十分な時間をかけて、来るべき変更についてプロジェクトに通知する方法についてのルールを定義することが必要です。これは、私たちが破壊的な変更を導入することを計画していることを意味するものではありませんが、時にはそれが必要になることがあります。
-
- Deprecations は
CHANGELOG
とリリースの説明で発表されます。
- Deprecations は
-
- 非推奨の機能については、開発者向けドキュメント、関数ドキュメント、関連する型に非推奨であることを明記する必要があります。
-
- 非推奨の機能は、次の
X (TBD)
のマイナーバージョンアップまで非推奨のままです。
- 非推奨の機能は、次の
以下は web3.js
の新バージョンをリリースするために必要な手順を説明したものです。コミュニティの標準と期待に沿うために、この手順に従っています。
- GitHubのドラフトリリースを作成する。
- リリースブランチを作成する (例:
release/1.2.7
). -
CHANGELOG.md
を更新してコミットする。- セクションヘッダー
[Unreleased]
を一番下に移動。 -
- 次のリリース予定のバージョン番号を一番下に追加 (新しいチェンジログエントリーのプレースホルダーとして)。
-
- プロジェクトルートで、
npm run build
を実行し、次のようなコミットメッセージの後に変更をコミットします。1.0.0-rc.0 用にビルドします`。 - 次のステップでは、各パッケージもビルドされますが、Lernaはパッケージをビルドする前にタグ付きコミットを行います(そのため、パッケージは含まれません)
- プロジェクトルートで、
- リリースコミットとタグを作成 例:
lerna version 1.2.7-rc.0 --no-push
1.- (パッケージのバージョン番号を更新し、minifiedファイルをビルドします (
1.x
用)、リリースコミットとタグを作成します)
- (パッケージのバージョン番号を更新し、minifiedファイルをビルドします (
-
- リリースブランチをタグを付けて origin にプッシュします
git push origin release/1.2.7 --follow-tags
.
- リリースブランチをタグを付けて origin にプッシュします
-
- ドラフトとしてリリースPRを作成(example)。
- 6.CIがグリーンであること/合格していることを確認します。
- (ここで、CIログを調査して、すべてが有効であること、結果が正しく報告されたことを確認します)
- npm run publish from-package -- --dist-tag rc` を実行します。
-
- Lernaはパッケージの数が多いため、うまくいかないことがあります。上記のコマンドでうまくいかない場合は、未公開のパッケージごとに以下を実行してください。
lerna publish --scope="package-name"
npm dist-tag add <package-name>@<version> rc
) を実行してください。
- Lernaはパッケージの数が多いため、うまくいかないことがあります。上記のコマンドでうまくいかない場合は、未公開のパッケージごとに以下を実行してください。
-
- GitHubのリリースを公開します。
-
- リリースの公開後、GitHub WebhookがReadTheDocsのビルドを開始する。
- (ビルドは、ReadTheDocsの管理パネルで手動で起動する必要がある場合があります。バージョンが表示されない場合は、以前のバージョンのビルドを作成し、リストを更新してください)。
- 新バージョンをアクティベートします。
-
- 主要な貢献者にPRレビューを依頼する。 1. EthereumJSのChris (@cgewecke) 1. Nomic LabsのPatricio (@alcuadrado)。 1. Embarkのマイケルさん(@michaelsbradleyjr) 1. ニコラス・フロム・トリュフ (@gnidan) 1. ENSに触れる、または影響を与える場合:Nick Johnson (@Arachnid)
- コミュニティの議論と2人のレビュアーの承認を得るために1週間待ちます。 (リリースが緊急パッチの場合、重要度に応じて制限時間が短縮されることがあります)。
- GitHub のドラフトリリースを
rc
リリースのテキストから作成します。 - リリースブランチ (例:
release/1.2.7
) をチェックアウトします。 - リリースコミットとタグを作成し、プッシュします。lerna version 1.2.7 --force-publish --no-push` とします。
- リリースブランチをタグを付けて origin にプッシュします
git push origin release/1.2.7 --follow-tags
. - GitHubのリリースを公開する。
- GitHubのWebhookは、リリースが公開された後にReadTheDocsのビルドをトリガーする必要があります。
- (ビルドはReadTheDocsの管理パネルで手動で起動する必要がある場合があります。バージョンが表示されない場合は、以前のバージョンのビルドを作成して、リストを更新してください)。
- 新バージョンをアクティベートします。
-
- バージョンをデフォルトに設定します。
- npm run publish from-package` を実行する。
- リリースPRをマージする。
- リリースのアナウンスを共有する。
(Note: npm は地域によって遅延があるので、すべての人がすぐにリリースを見ることができないかもしれません。) 1.
- ツイッター
- Gitter
- イーサリアムJavaScriptコミュニティ(EJC)Discord
- 特定のプロジェクトにおけるリリースの重要性に応じて、以下のアドレスに書き込んでください。
- 0x の Fabio (@fabioberger)
- OpenZeppelin の Santiago (@spalladino) 1.
- WalletConnectのPedro (@pedrouid)
- FunFairのJoshさん(@joshstevens19)
- トリュフ、グノーシス、アラゴン、エンバーク、アルケミー、ブイドラー、リミックス