Controllo del codice sorgente utilizzando un singolo server di sviluppo remoto, con "repository locale" non sulla macchina dello sviluppatore

0

Abbiamo una piccola squadra che attualmente sta lavorando a numerosi progetti. Inizialmente avevamo iniziato come una squadra di due persone e siamo saltati in testa per primi senza alcun tipo di controllo del codice sorgente. Al momento interrompiamo numerose best practice e facciamo sviluppo su siti live (yuck, lo so).

Siamo in procinto di risolvere questo problema in modo incrementale. Il primo passo, che stiamo implementando, è costituito da istanze di sviluppo e produzione separate di siti e processi interni per spingere il codice da dev a prod e come gestire le situazioni che richiedono il rollback di tali modifiche. Questo ci lascia ancora il problema di più di uno sviluppatore che lavora sullo stesso file e si sovrascrive a vicenda.

Il prossimo passo, ed è qui che entra in gioco la mia domanda, sta implementando un cambiamento molto più ampio, e implementando il controllo del codice sorgente. Ovviamente, il controllo del codice sorgente funziona meglio quando ogni sviluppatore ha il proprio repository locale. Le mie ricerche hanno prodotto per lo più scenari che coinvolgono un server SCM remoto e ogni sviluppatore scarica una copia sul proprio computer locale per lo sviluppo. Per una miriade di motivi, che non entrerò qui, lo sviluppo su macchine locali non funzionerà per noi, quindi, per favore non rispondere con domande sul perché non facciamo solo lo sviluppo su macchine locali .

Quindi, quello che sto immaginando è un server di sviluppo remoto che può servire a più funzioni. In primo luogo, può fungere da server di staging per i nostri progetti. In secondo luogo, può fungere da server di sviluppo per tutti i nostri sviluppatori. Il loro IDE, ovviamente, sarebbe ancora sul loro computer locale e si collegherebbero al server di sviluppo remoto come hanno sempre fatto. Lo sfregamento sta integrando il controllo del codice sorgente nel mix.

Consentitemi di eliminare la dichiarazione di non responsabilità che conosco abbastanza sul controllo del codice sorgente per essere pericoloso, ma non abbastanza per implementare realmente qualcosa.

Detto ciò, ecco i miei pensieri.

1) Il server delle applicazioni supporta le istanze, quindi la gestione temporanea e ogni sviluppatore avranno la propria istanza.

2) Staging e ogni sviluppatore avrebbe la propria cartella radice sul server e i siti all'interno di ogni cartella radice sarebbero accessibili tramite sottodominio, in questo modo:

D:/Dean/...
    .../Inetpub/wwwroot/example1.com/wwwroot/     --->  dean.example1.com
    .../Inetpub/wwwroot/example2.com/wwwroot/     --->  dean.example2.com
    .../Inetpub/wwwroot/gaggle.com/wwwroot/       --->  dean.gaggle.com
    .../Inetpub/wwwroot/yoohoo.com/wwwroot/       --->  dean.yoohoo.com
    .../Inetpub/wwwroot/bong.com/wwwroot/         --->  dean.bong.com

D:/Sue/...
   .../Inetpub/wwwroot/example1.com/wwwroot/      --->  sue.example1.com
   .../Inetpub/wwwroot/example2.com/wwwroot/      --->  sue.example2.com
   .../Inetpub/wwwroot/gaggle.com/wwwroot/        --->  sue.gaggle.com
   .../Inetpub/wwwroot/yoohoo.com/wwwroot/        --->  sue.yoohoo.com
   .../Inetpub/wwwroot/bong.com/wwwroot/          --->  sue.bong.com

D:/Jorge/...
     .../Inetpub/wwwroot/example1.com/wwwroot/    --->  jorge.example1.com
     .../Inetpub/wwwroot/example2.com/wwwroot/    --->  jorge.example2.com
     .../Inetpub/wwwroot/gaggle.com/wwwroot/      --->  jorge.gaggle.com
     .../Inetpub/wwwroot/yoohoo.com/wwwroot/      --->  jorge.yoohoo.com
     .../Inetpub/wwwroot/bong.com/wwwroot/        --->  jorge.bong.com

D:/Li/...
  .../Inetpub/wwwroot/example1.com/wwwroot/       --->  li.example1.com
  .../Inetpub/wwwroot/example2.com/wwwroot/       --->  li.example2.com
  .../Inetpub/wwwroot/gaggle.com/wwwroot/         --->  li.gaggle.com
  .../Inetpub/wwwroot/yoohoo.com/wwwroot/         --->  li.yoohoo.com
  .../Inetpub/wwwroot/bong.com/wwwroot/           --->  li.bong.com

D:/Staging/...
       .../Inetpub/wwwroot/example1.com/wwwroot/  --->  staging.example1.com
       .../Inetpub/wwwroot/example2.com/wwwroot/  --->  staging.example2.com
       .../Inetpub/wwwroot/gaggle.com/wwwroot/    --->  staging.gaggle.com
       .../Inetpub/wwwroot/yoohoo.com/wwwroot/    --->  staging.yoohoo.com
       .../Inetpub/wwwroot/bong.com/wwwroot/      --->  staging.bong.com

Ciascuna di queste cartelle radice conterrà tutte le risorse necessarie per far funzionare questi siti: librerie di codici, file funzione definiti dall'utente, tag personalizzati, componenti, risorse di terze parti come Bootstrap, Font Awesome, ecc.

Inoltre, ciascuna di queste cartelle radice fungerà da home page per tutti i "repository locali" per ogni sviluppatore e la cartella radice di staging fungerà da home per il codice finalizzato per il QA prima della distribuzione alla produzione.

3) Una singola istanza di IIS supporterà tutto questo. Poiché gli sviluppatori hanno il compito di scrivere codice web e non di gestire alcun aspetto di IIS, come vengono analizzate le richieste prima di passarle al server delle applicazioni per il loro codice da elaborare, ecc. Non vedo alcun problema con IIS come singolo istanza (in effetti, rende più facile rafforzare la similarità dell'ambiente).

4) Non ho ancora risolto una soluzione di controllo del codice sorgente. Mi sto appoggiando a qualche modo di DVCS come Git o Mercurial.

5) Sembra che separare il repository dall'IDE sia che siano su macchine separate è piuttosto problematico. Poiché la perfetta integrazione con il controllo del codice sorgente all'interno dell'IDE è il modo più sicuro per ottenere l'adozione, mi piacerebbe love che la mia comprensione non sia corretta.

Quindi, dopo tutto questo, la mia domanda è ...

Come possiamo avere e il controllo del codice sorgente che gli sviluppatori che lavorano su un server di sviluppo remoto e si siano integrati perfettamente nel loro IDE?

Inoltre, un avvertimento utile (o fastidioso, a seconda della tua prospettiva) è che siamo una casa di ColdFusion e usiamo ColdFusion Builder 2016 (che è Eclipse, sotto il cofano) quindi qualsiasi soluzione ci sarà bisogno di lavorare con quello. Stiamo anche eseguendo Windows Server e un mix di macchine locali Windows e Mac, se questo influisce sulla soluzione che suggerirai.

    
posta OregonJeff 20.10.2016 - 02:11
fonte

2 risposte

2

Windows Server è perfettamente in grado di gestire qualcosa di simile con alcuni interventi manuali (o meglio ancora, script PowerShell). Ti suggerisco di usare Git, perché so che può gestire la situazione con cui hai a che fare (ed è generalmente ben considerato per la gestione di più utenti). Sposta tutto il codice sorgente in Git, che puoi ospitare sul tuo server. Bloccherò tutto ciò che riguarda il ramo principale una volta che lo hai impostato in modo che possa essere unito solo da uno strumento di compilazione / distribuzione.

Ecco i passaggi che seguirò:

  • Crea account utente per ogni utente sul server
  • Crea una directory per ogni utente, fornita con le autorizzazioni corrette
  • Clona il repository in ognuna delle nuove directory
  • Crea un pool di app per utente in IIS
  • Crea tutte le applicazioni per utente in IIS e assegnale al pool di app
  • Condividi la directory dell'utente come condivisione di rete
  • Sul computer locale che esegue l'IDE, utilizzare il percorso di condivisione di rete come cartella di progetto

Questo dovrebbe farti tutto ciò che vuoi. Come condivisione di rete, lo sviluppatore può interagire con esso come se fosse locale. L'unica avvertenza che ho notato è che le condivisioni di rete non attivano sempre gli stessi eventi di modifica dei file delle cartelle locali, il che può rendere certi strumenti di ricarica non funzionanti.

    
risposta data 20.10.2016 - 02:38
fonte
0

Risposta breve

Facile. Qualsiasi condivisione di rete Windows, annunciata in LAN, può essere montata come unità locale aggiuntiva su qualsiasi host in LAN e le risorse su questa condivisione verranno presentate come locali al sistema operativo locale. Solo fallo

Risposta più lunga

Il protocollo SMB di Microsoft è ancora la scelta più povera e peggiore rispetto alle alternative, in particolare per il caso più complesso, che solo "condividi testo / file semplici". Se è possibile, sarà meglio investire un po 'di tempo, attenzione, denaro in indagini e distribuire alternative SMB ( punto uno , punto due ) fin dall'inizio, che hanno disastri, interrompendo affari

PS: dal mio POV, i repository locali con remote bare-repo sono ancora il modo più ragionevole e naturale senza mal di testa e flusso di lavoro trasparente senza rastrelli di giardino accuratamente sparsi nell'erba

    
risposta data 20.10.2016 - 03:49
fonte

Leggi altre domande sui tag