web-dev-qa-db-ja.com

monorepo内で製品をバージョン管理するにはどうすればよいですか?

私はモノレポについて自分自身を教育してきました。それは私のチームと私たちのプロジェクトの現状にとって素晴らしい解決策であると信じているからです。複数のWeb製品(クライアントポータル、内部ポータル、API、コア共有コード)があります。

私が見つけたい答えを見つけるのに苦労しているのはバージョン管理です。

すべてのプロジェクトと製品がモノレポ内にある場合のバージョン管理戦略は何ですか?

  • 1つのバージョンがすべてに適合しますか?
  • 独立したバージョン管理を備えたGitサブモジュール(モノレポジトリを持つという点を壊すようなもの)
  • 他の戦略?

また、CIの観点から、プロジェクトAで何かをコミットする場合、依存関係/共有モジュールに必ずしも変更が加えられていなくても、すべてのプロジェクトで一連のテスト全体を起動して、何も壊れていないことを確認する必要がありますか?

15
justinledouxweb

すべてのプロジェクトと製品がモノレポ内にある場合のバージョン管理戦略は何ですか?

次の理由から、1つのバージョンがすべてに適合することをお勧めします。

  • 製品をリリースするときに、たとえばブランチ全体にrelease-x.x.xのタグを付けることができます。バグが発生した場合は、「XXXのどのバージョンがYYYを使用していたか」を確認する必要はありません。
  • また、XXXのバージョンx.x.xがYYYのバージョンx.x.xを使用するように強制することも簡単になります。本質的に、プロジェクトの同期を維持します。もちろん、これをどのように行うかは、プロジェクトがどのテクノロジーで記述されているかによって異なります。

また、CIの観点から、プロジェクトAで何かをコミットする場合、依存関係/共有モジュールに必ずしも変更が加えられていなくても、すべてのプロジェクトで一連のテスト全体を起動して、何も壊れていないことを確認する必要がありますか?

テストの実行に特に時間がかからなければ、これによる害はありません。私は間違いなくこれをお勧めします。テストが頻繁に実行されるほど、時間依存または環境依存のバグをより早く発見できます。

何らかの理由で常にテストを実行したくない場合は、VCSにクエリを実行し、変更内容に応じて条件付きでテストをトリガーするスクリプトを作成できます。これは、VCSとCIサーバー間の統合に大きく依存しています。

2
bitshift