Devo utilizzare un singolo repository quando più parti dello stesso progetto sono in esecuzione sullo stesso server? [duplicare]

3

Sto pianificando un progetto composto dalle seguenti parti:

  1. API REST in Lumen
  2. Client Web in Laravel
  3. Sito web del prodotto in Jekyll

Questi prodotti separati saranno in esecuzione sullo stesso server.

Mi piacerebbe avere un ambiente di sviluppo che simuli l'ambiente di produzione il più vicino possibile, ecco perché vado con Vagrant in combinazione con un singolo playbook di Ansible che disposizioni entrambi gli ambienti .

Qual è il modo migliore per organizzare un tale progetto? Devo tenere tutto in un repository, o devo dividere le parti in più repository?

E riguardo l'ambiente di sviluppo e gli script di provisioning? Dovrei metterli in un repository separato? Come faccio a fare riferimento alle parti separate del progetto nell'ambiente di sviluppo?

Mi piacerebbe essere in grado di clonare un singolo repository e creare un ambiente di sviluppo con il minor lavoro possibile.

Qualche raccomandazione?

Modifica : la mia domanda differisce da questa domanda perché sono particolarmente alle prese con le cose relativo agli ambienti di produzione e sviluppo.

    
posta Willem-Aart 03.01.2016 - 12:26
fonte

2 risposte

4

Dopo un po 'di scherzi, ho trovato una soluzione che sembra funzionare piuttosto bene.

Tengo i sottoprogetti in repository separati:

  • projectname-infrastrutture
  • projectname-api
  • projectname-client
  • projectname-sito web

Il documento project-infrastructure -repository contiene un Vagrantfile, alcuni file di provisioning e una cartella di gioco Ansible che viene eseguita localmente per configurare l'ambiente di sviluppo:

--- - hosts: 127.0.0.1 connection: local tasks: - git: repo=https://[email protected]/projectname-api.git dest=www/api/ - git: repo=https://[email protected]/projectname-client.git dest=www/client/ - git: git: repo=https://[email protected]/projectname-website.git dest=www/website/

Quando viene eseguita la playbook di cui sopra, i repository separati sono clonati nella cartella www che nginx su Vagrant usa per servire i file.

Ovviamente, la www -folder è all'interno del .gitignore di projectname-infrastructure .

L'unica cosa che devo fare è git clone https://[email protected]/projectname-infrastucture.git , seguita da ansible-playbook setup.yml -i 127.0.0.1, . Quindi posso solo eseguire vagrant up e tutto è attivo e funzionante.

Qualche aspetto negativo di questo approccio?

    
risposta data 03.01.2016 - 18:18
fonte
0

Suggerirei di utilizzare lo stesso repository anche se parti sono in esecuzione su server diversi. E io non dividerei script di setup (ad esempio, ansible playbook) anche in repository diversi, perché è lo stesso progetto in ogni modo.

È solo una questione di convenienza: hai solo bisogno di un checkout per iniziare come sviluppatore, tester o tecnico di supporto. E non mi preoccuperei di eseguire il provisioning di parti non necessarie di un sistema su un server, perché l'ansible potrebbe occuparsene.

    
risposta data 03.01.2016 - 16:02
fonte