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
- Sembra che il mio capo e io siamo gli unici a impegnarsi.
- Se l'app SourceTree di qualcuno tocca il repository sul sito dev contemporaneamente a te, può impedirti di impegnarti.
- 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.
- Non possiamo utilizzare le richieste pull e la revisione del codice, che sono davvero utili quando una persona meno tecnica invia il codice.
- 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:
- 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 ...
- 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.