• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed FullStack Application. Odpowiednia struktura repozytorium.

Object Storage Arubacloud
+2 głosów
313 wizyt
pytanie zadane 15 marca 2021 w JavaScript przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 16 marca 2021 przez Jakub 0

Witam, kończę pisać prostą aplikację internetową i nadszedł czas na jej wydanie. Chcę udostępnić kod źródłowy na Github oraz umieścić ją publicznie z użyciem Heroku. Projekt podzielony jest na dwa katalogi o wiadomym przeznaczeniu:

  • client
  • server

Oba zawierają w sobie repozytorium git. W fazie deweloperskiej frontend jest serwowany z użyciem Vue CLI a backend to osobny serwer. W wersji produkcyjnej aplikacja Vue wraz z zasobami kompiluje się do katalogu public serwera jako statyczne pliki.

O ile na Github będą dostępne oba repozytoria, to na heroku trafi tylko serwer z odpowiednią statyczną zawartością katalogu public.

I tu mam mały problem:

  • W przypadku repozytorium na Github, zawartość katalogu public serwera (skompilowana aplikacja) nie ma żadnego znaczenia i powinna znaleźć się w gitignore. Wynika to stąd, że w fazie testowej klient i serwer powinny działać odrębnie. Budowanie aplikacji Vue do tego katalogu nie powinno dokonywać zmian w historii repozytorium serwera. Było by to bardzo mylące i niewygodne.
  • W przypadku heroku, który też wykorzystuje gita, katalog public ma znaczenie, ponieważ tam znajduje się gotowa zbudowana aplikacja.

Nie wiem od końca jak z tego wybrnąć. Pierwsze o czym pomyślałem to inne pliki gitignore dla obu platform. No ale repozytorium jest jedno... Da aplikacji produkcyjnej mogło by być oddzielne repo. Nie wiem jednak czy to nie jest zbyt nieefektywne rozwiązanie.

Będę bardzo wdzięczny za jakąś poradę od bardziej doświadczonych osób. Pozdrawiam serdecznie :)

komentarz zamknięcia: Temat wyczerpany

1 odpowiedź

+3 głosów
odpowiedź 15 marca 2021 przez sebeks Mądrala (5,300 p.)
wybrane 16 marca 2021 przez Jakub 0
 
Najlepsza
Heroku zaciągą aplikację z gałęzi master/main i tam trzymaj sobie serwer z buildem w public, a fazę testową realizuj na innym branchu. Możesz napisać w package.json skrypty prebuild i postbuild uruchamiane przed i po buildzie, gdzie można realizować zadania kopiowania builda, usuwania, itd. Lub dowolny inny skrypt uruchamiany npm run, który będzie pracował na plikach.
Dwa oddzielne repo będą wymagały kopiowania builda, po każdej zmianie frontu i w historii commitów serwera, była by wtedy tylko zmiana plików (zminifikowanych w katalogu public) a co było zmienione w kodzie trzeba by było szukać w tym drugim repo. Jedno repo ma tą zaletę, że zmiany na serwerze i w kliencie będą/mogą być w jednym pull request. Odzielne repo wymusza najpierw wprowadzanie zmian na serwerze i sprawdzanie ich np. Postmanem, a dopiero potem zmianę w kliencie.
Wszystko zależy chyba też od skali projektu. Myślę, że jeśli build nie jest jakiś wielki, to nie ma problemu i jeśli assetów jest mało i ich nazwy nie są hashowane po buildzie za każdym razem.
Sam jestem ciekaw opinii innych.
komentarz 16 marca 2021 przez Jakub 0 Pasjonat (23,120 p.)
edycja 16 marca 2021 przez Jakub 0

Dziękuje za odpowiedź. Proces budowania aplikacji do odpowiedniego katalogu serwera mam zautomatyzowany. Ciekawy sposób z tymi brachami, nie pomyślałem o tym.

Po przeczytaniu odpowiedzi, widzę to u siebie tak:

Serwer i klient są w jednym repo. Mam 2 gałęzie, np:

  • master (do produkcji)
  • develop

W master, cała aplikacja kliencka była by w .gitignore. W develop public był by ignorowany. W razie dokonania jakiś zmian w develop, gałęzie były by złączone i potem, ponownie wydzielone.

Myślę, że mogę sobie pozwolić na jedno repo bo aplikacja jest mała i prosta. 

Nie wiem czy dobrze wszystko zrozumiałem i czy wyciągnąłem sensowne wnioski.

Będę wdzięczny za ustosunkowanie się do logiki mojego pomysłu :)

1
komentarz 16 marca 2021 przez sebeks Mądrala (5,300 p.)
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

Jest kilka sposobów na to. W tym linku masz to opisane dokładniej co wybrałeś.

Podobne pytania

0 głosów
1 odpowiedź 375 wizyt
pytanie zadane 8 września 2021 w JavaScript przez ShockWave Bywalec (2,350 p.)
0 głosów
0 odpowiedzi 158 wizyt
0 głosów
1 odpowiedź 563 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...