Come trasferire file in produzione?

9

Siamo un gruppo che ha iniziato a lavorare su un sito web abbastanza grande con una base di codice esistente. Abbiamo un test e un server di produzione.

La nostra idea è di avere un repository di test con un numero di sviluppatori con accesso push a; e un deposito benedetto che solo pochi riescono a spingere. Il repository benedetto dovrebbe essere sempre stabile e rappresentare l'ultima versione di produzione.

Come posso automatizzare il processo di trasferimento dei file in produzione? È brutto che i file di produzione siano sotto controllo di versione? In questo modo, spingendo verso il repository benedetto significherebbe il dispiegamento. Ma cosa succede quando ci sono conflitti di fusione? Il server di produzione si interromperà fino a quando non verrà risolto?

    
posta Tamás Szelei 10.06.2011 - 11:47
fonte

3 risposte

7

Per dirla semplice:
Il processo push di per sé dovrebbe essere completamente automatico. Indipendentemente dal fatto che tu abbia qualche script personalizzato o semplicemente dal repository "benedetto" all'ambiente di produzione. Questo dipende da te. Dovresti semplicemente avere qualcosa di automatizzato, perché i processi automatizzati possono essere resi affidabili (al contrario del caricamento di file a mano e così via).

Tuttavia, il processo push dovrebbe essere attivato manualmente. Spingi i tuoi aggiornamenti e, una volta che ti senti sicuro, taggalo come candidato per il rilascio e portalo nel tuo ambiente di test (che sarebbe idealmente più simile al tuo ambiente di produzione possibile). Una volta testato l'RC, è possibile avviare la spinta.
Ad oggi, nient'altro può darti, cosa possono fare i tester umani.

Questo suona un po 'lento, nel senso che il circuito di feedback è relativamente grande. Ma per un corretto test, è importante prendere un'istantanea fissa, che viene quindi esaminata per 24-48 ore (o forse più, a seconda delle dimensioni del progetto). L'opposto è uno scenario, in cui trovi molti bug subito dopo aver premuto e provi a correggerlo con alcune correzioni rapide che introducono nuovi bug.
È meglio fare un rilascio con bug noti (di severità accettabile), rispetto a uno con bug sconosciuti (di gravità sconosciuta).

    
risposta data 10.06.2011 - 12:07
fonte
2

Ho imparato molto sull'implementazione osservando come funziona Capistrano. All'epoca lavoravo con RoR, quindi è stata una scelta logica e anche se non mi sono mai comportato bene per il progetto su cui stavo lavorando, il modo in cui esegue gli aggiornamenti automatici è stato molto utile.

Potresti trovarti in una situazione in cui puoi usarlo direttamente anche - non è necessariamente legato a Rails - ma in caso contrario, il modo in cui si comporta è sicuramente utile.

    
risposta data 10.06.2011 - 13:16
fonte
1

A seconda della piattaforma che si sta utilizzando, ci sono molti strumenti là fuori che potrebbero avere senso da usare per automatizzare i rilasci di produzione. Lavoro in un negozio .NET, quindi abbiamo usato NAnt (sebbene MSBuild sia un'opzione migliore al giorno d'oggi). Java ha Ant e forse altre cose. Ruby ha cose come Rake. Poi ci sono piattaforme di integrazione continue come TeamCity e Hudson che possono essere utilizzate anche per gestire le versioni.

Non ho mai visto o sentito parlare di avere il codice prodotto direttamente in un repository separato per il controllo dei sorgenti, ma questo potrebbe certamente funzionare. Come ha detto back2dos, la chiave è automatizzare. Abbiamo i nostri script di compilazione progettati per il check-out dal controllo del codice sorgente, la generazione e l'invio all'ambiente di staging per i test. Quindi, quando ci piace come funziona la scena, gli script copiano da QA a Prod.

La mia raccomandazione è di esaminare gli strumenti disponibili e selezionarne uno, quindi progettare un processo che funzioni correttamente con lo strumento selezionato. Non cercare di reinventare troppo la ruota: questo è un problema molto risolto.

    
risposta data 10.06.2011 - 14:07
fonte

Leggi altre domande sui tag