6

Uczę się o monorepach, ponieważ uważam, że jest to świetne rozwiązanie dla mojego zespołu i obecnego stanu naszych projektów. Mamy wiele produktów internetowych (portal klienta, portal wewnętrzny, API, współdzielony rdzeń).Jak do wersji produktów wewnątrz monorepo?

Gdzie walczę, aby znaleźć odpowiedź, którą chcę znaleźć, jest wersjonowanie.

Jaka jest strategia określania wersji, gdy wszystkie projekty i produkty znajdują się w monorepo?

  • 1 wersja pasuje do wszystkich?
  • Submody Git z niezależną wersją (rodzaj przełamania punktu posiadania repozytorium monofonicznego)
  • Inna strategia?

I z punktu widzenia CI, kiedy coś powierzymy w projekcie A, powinniśmy uruchomić cały zestaw testów we wszystkich projektach, aby upewnić się, że nic się nie zepsuło, mimo że nie było konieczności zmiany w moduł zależności/udziału?

+0

Powinieneś wyraźnie zaznaczyć, których VCS używasz (wydaje się być git) i którego narzędzia do kompilacji używasz. Również jakiego rodzaju przepływy pracy używasz. Również 2 pytania w 1 nie są dobre dla stackoverflow. – tkruse

Odpowiedz

2

Jaka jest strategia określania wersji, gdy wszystkie projekty i produkty znajdują się w monorepo?

Sugerowałbym, że jedna wersja pasuje do wszystkich z następujących powodów:

  • Po zwolnieniu swoje produkty można oznaczyć całą gałąź jako release-x.x.x na przykład. Jeśli pojawią się błędy, nie musisz sprawdzać, "która wersja była XXX miała wartość YYY"
  • Ułatwia to również wymuszenie, że wersja x.x.x z XXX używa wersji x.x.x z YYY. Zasadniczo utrzymanie synchronizacji projektów. Jak go o to oczywiście zależy od tego, jaka technologia Twoje projekty są napisane.

I z perspektywy CI, kiedy popełnić coś w projekcie A, należy uruchomić cały zestaw testów we wszystkich projekty, aby upewnić się, że nic się nie zepsuło, mimo że nie było koniecznie zmiany w module zależności/udziału?

Jeśli wykonanie testów nie zajmie zbyt dużo czasu, nie może to zaszkodzić. Zdecydowanie polecam to. Im częściej testy będą przeprowadzane, tym szybciej możesz wykryć błędy zależne od czasu lub środowiska.

Jeśli z jakiegokolwiek powodu nie chcesz przeprowadzać testów przez cały czas, możesz wysłać zapytanie do VCS i napisać skrypt, który warunkowo wyzwala testy w zależności od tego, co się zmieniło. Jest to w dużej mierze uzależnione od integracji VCS i serwera CI.