1. 概要

リリースバージョンに名前を付けるときは、セマンティックバージョニングを使用するのが一般的です。 たとえば、これらのルールは、MAJOR.MINOR.REVISIONなどのバージョン形式に適用されます。

  • メジャー:主な機能と潜在的な重大な変更
  • マイナー:下位互換性のある機能
  • 改訂下位互換性のある修正と改善

プロジェクトは、セマンティックバージョニングとともに、特定のリリースの状態をさらに明確にするためにラベルを使用することがよくあります。 実際、これらのラベルを使用することで、ビルドのライフサイクルやアーティファクトが公開される場所についてのヒントを提供します。

この簡単な記事では、主要なSpringプロジェクトで採用されているバージョン命名スキームについて説明します。

2. SpringFrameworkとSpringBoot

セマンティックバージョニングに加えて、SpringFrameworkとSpringBootがこれらのラベルを使用していることがわかります。

  • ビルド-スナップショット
  • M[番号]
  • RC[番号]
  • リリース

BUILD-SNAPSHOTは現在の開発リリースです。Springチームはこのアーティファクトを毎日作成し、https://repo.spring.io/ui/native/snapshotにデプロイします。

マイルストーンリリース(M1、M2、M3、…)は、リリースプロセスの重要な段階を示します。チームは、開発の反復が完了したときにこのアーティファクトを作成し、 https://repoにデプロイします。 .spring.io / ui / native /milestone

リリース候補(RC1、RC2、RC3、…)は、最終リリースを構築する前の最後のステップです。コードの変更を最小限に抑えるために、この段階ではバグ修正のみを行う必要があります。 https://repo.spring.io/ui/native/milestoneにもデプロイされます。

リリースプロセスの最後に、SpringチームがRELEASEを作成します。したがって、通常、これが唯一の作成可能なアーティファクトです。 このリリースは、一般提供の場合はGAと呼ぶこともできます。

これらのラベルはアルファベット順に並べられています。ビルドマネージャーと依存関係マネージャーが、バージョンが別のバージョンよりも新しいかどうかを正しく判断できるようにします。 たとえば、Maven2は1.0-SNAPSHOTを1.0-RELEASEよりも新しいものと誤って見なしていました。 Maven3はこの動作を修正しました。 結果として、命名スキームが最適でない場合、奇妙な動作が発生する可能性があります。

3. アンブレラプロジェクト

SpringCloudやSpringDataなどのアンブレラプロジェクトは、独立しているが関連するサブプロジェクトに対するプロジェクトです。 これらのサブプロジェクトとの競合を回避するために、アンブレラプロジェクトは異なる命名スキームを採用しています。 番号付きバージョンの代わりに、各リリーストレインには特別な名前があります。

アルファベット順に、ロンドン地下鉄駅は、スターター、エンジェル、ブリクストン、フィンチリー、グリニッジ、ホクストンのSpringCloudリリース名のインスピレーションです。

上記のSpringラベルに加えて、はサービスリリースラベル(SR1、SR2…)も定義します。 重大なバグが見つかった場合は、サービスリリースを作成できます。

SpringCloudリリースは特定のSpringBootバージョンとのみ互換性があることを理解することが重要です。 参考までに、 Spring Cloud Projectページには、互換性テーブルが含まれています。

4. 結論

上に示したように、明確なバージョン命名スキームを持つことが重要です。 マイルストーンやリリース候補などの一部のリリースは安定している可能性がありますが、常に本番環境に対応したアーティファクトを使用する必要があります。 あなたの命名スキームは何ですか? これに比べてどのような利点がありますか?