Flusso di lavoro di sviluppo (Git / CI) in vari livelli di tecnologia. Negozio .NET

1

tl; dr: Ho bisogno di un flusso di lavoro di sviluppo per le app ASP.NET che funzionano per il progettista su un Mac, i produttori di contenuti che non hanno lo studio visivo e gli sviluppatori C # /. NET (soprattutto me), tali che possiamo avere l'integrazione continua e normale ramificazione e fusione.

Flusso di lavoro corrente

Un progettista e pochi editor di contenuti apportano modifiche al sito sul nostro server di sviluppo / di staging (principalmente modifiche HTML e CSS, oltre a modifiche saltuarie ad alcuni file JSON che definiscono il contenuto). Una volta che gli piace, chiedono al mio capo o me di impegnarsi e spingere quei cambiamenti. Il server di staging ospita in realtà una copia clonata del repository Git del nostro sito. Noi (il mio capo o io) ci connettiamo al clone e commettiamo usando git (SourceTree, in realtà), e spingiamo la modifica, che lo fa distribuire attraverso l'integrazione continua.

Perché questo succhia

  1. Sembra che il mio capo e io siamo gli unici a impegnarsi.
  2. Se l'app SourceTree di qualcuno tocca il repository sul sito dev contemporaneamente a te, può impedirti di impegnarti.
  3. L'ambiente di sviluppo è sostanzialmente differente nel modo in cui viene distribuito dall'ambiente di produzione. Ciò crea in modo efficace scenari "build sulla mia macchina" anche se stiamo sviluppando contro un server.
  4. Non possiamo utilizzare le richieste pull e la revisione del codice, che sono davvero utili quando una persona meno tecnica invia il codice.
  5. Stiamo lavorando con un ramo, quindi è facile inquinare l'origine di produzione con commit che sono instabili nell'ambiente di produzione. Questo fa tornare indietro il dodgier.

Dove andare dopo

Preferirei molto avere un flusso di lavoro in cui le persone clonano il repository, creano il proprio ramo, apportano modifiche e le confermano, quindi eseguono una richiesta pull (o semplicemente si uniscono) nel ramo di sviluppo e lascia che il server CI esegua il la routine di distribuzione prima nell'ambiente di sviluppo.

Ci sono un paio di problemi con questo:

  1. La maggior parte delle persone che fanno modifiche necessitano del riscontro istantaneo della modifica dei file su un server web live. Noi potremmo fargli costruire / eseguire le app sulla loro macchina, ma ...
  2. Il nostro designer vive in Mac OSX e non abbiamo licenze Visual Studio per lui o per i produttori di contenuti. E perché dovremmo? Non sono sviluppatori di .NET!

Dopo aver hackerato per un'ora o giù di lì, sembra che gli strumenti di sviluppo .NET multipiattaforma disponibili gratuitamente come Codice di Visual Studio e Xamarin Studio non funzioneranno per le app di cui più abbiamo bisogno ( che esegue .NET 4.5.1 MVC).

Pensieri su come potrei risolvere la tensione?

Un compromesso potrebbe essere quello di lasciare il sito dev così com'è e creare un secondo sito di staging che è distribuito tramite CI. Questo non risolve interamente tutto (la gente si collegherebbe ancora a un clone di git condiviso, che rovina SourceTree), ma ci avvicina a dove mi piacerebbe.

    
posta jonnybot 24.07.2015 - 21:32
fonte

1 risposta

2

I would much rather have a workflow where people clone the repository, create their own branch, make changes and commit them

Assolutamente dovrebbero - nella mia mente questo è il motivo per un controllo di versione distribuito. Se non hanno fiducia negli strumenti, un po 'di pratica dovrebbe occuparsene.

We're working with one branch

Sono sicuro che questa è una fonte nascosta di problemi - no. Usa cose come Gitflow (e alternative ) e consentire a ciascun progettista e sviluppatore di lavorare sulle proprie filiali (o collaborare sui rami delle funzionalità). Puoi anche esplorare spinte con script verso l'origine per assistere i progettisti nel flusso di lavoro e velocizzare il loro turno nel tempo su un problema.

We could have them build/run the apps on their machine, but...

Hai accesso ai server di test per eseguire una build e testarla?

Penso che ci sia ancora più motivazione qui per i propri repository clonati collegati a una build CI ( TeamCity e Octopus strumenti di tipo sarebbe di aiuto qui) e distribuire ai server di prova.

Non sono sicuro che le risorse siano disponibili, ma potresti anche esplorare i server basati su Azure, ecc. Dato che hanno dei Mac, potresti anche eseguire VM su di essi. Io uso molto VirtualBox per le macchine di prova. Questo riguarda anche i compromessi che hai citato, è un caso di bilanciamento delle risorse attualmente disponibili contro eventuali nuove spese aggiuntive.

... we don't have Visual Studio licences for him or the content writers. And why should we have to? They're not .NET devs!

Anche in questo caso, ciò potrebbe dipendere dalle dimensioni del team ecc. ma potrebbe valere la pena di esplorare il Visual Studio Community Edition (è gratuito, ma esistono limitazioni) che potrebbe essere sufficiente per i progettisti di utilizzare.

    
risposta data 24.07.2015 - 21:43
fonte

Leggi altre domande sui tag