2012-03-08 19 views
19

Stiamo provando a configurare un ambiente di distribuzione automatizzato con Git/Github. Abbiamo 3 diversi ambienti; locale, prova e vivi. Quando aggiungiamo una nuova funzione su local, per prima cosa carichiamo i file sul server di test per testare la funzionalità appena creata. Se tutto è OK, dobbiamo caricare tutti i file sul server live. Ma questo processo di "caricamento" non è una soluzione perfetta, poiché a volte ci dimentichiamo di caricare alcuni file. Tra l'altro abbiamo anche un'app mobile su iPhone e Android, quindi il mobile potrebbe essere il quarto ambiente per noi.Distribuzione con Git/Github

Quello che cerchiamo di fare è impostare un ambiente di distribuzione automatizzato. Quando eseguiamo il commit di una nuova funzione per testare il server, dopo aver provato questa nuova funzione, vogliamo inviarla al server live.

Ci possono essere molti commit sul server di test ma vogliamo spingere specifici commit sul server live. Non siamo riusciti a trovare il modo di affrontare 3-4 ambienti e non i codici casuali. Come potremo inviare i codici corretti al server live? Come gestiremo i nostri test e i server live? Esistono buone risorse che spiegano come configurare ambienti e processi di distribuzione diversi con Git/Github? Ci sono articoli per dirci cosa fare passo-passo?

Ho letto quegli articoli ma nessuno di loro racconta come gestire ambienti locali, di test e live.

EDIT 2012-03-09: ho trovato http://beanstalkapp.com/ e http://springloops.com ed entrambi sembrano molto bravo a distribuzione. Non sono sicuro di potermi fidare di questi servizi, ma entrambi fanno esattamente ciò che voglio. Testerò entrambi e condividerò i miei risultati qui per informare tutti.

+2

Git non è uno strumento di distribuzione. Ci sono strumenti molto più adatti per questo obiettivo. Quello che puoi fare è combinare quelli insieme. – Ikke

+1

So che Git non è uno strumento di distribuzione, ma molti sviluppatori utilizzano Git * come * uno strumento di distribuzione. Usiamo Github per memorizzare i nostri codici, quindi abbiamo pensato che sarebbe stato fantastico usare Git/Github come strumento di distribuzione. –

+0

Questa domanda è ideale per [Errore server] (http://serverfault.com) - per esempio [questo] (http://serverfault.com/q/142729/105371) domanda (una delle tante simili laggiù). –

risposta

8

ho finalmente trovato quello che cercavo. http://beanstalkapp.com sembra la scelta migliore. Ha funzionalità di distribuzione automatica e supporta Git. Dopo averlo testato per una settimana, posso dire che funziona molto stabile e veloce. Grazie a tutti per avermi aiutato e cercando di mostrarmi la via.

+0

Sembra che le persone possano provare il piano più costoso gratuitamente per 30 giorni. –

4

Sembra che sia necessario un sistema Continuous Integration. Ho avuto un grande successo sia con che con .

Per quanto riguarda "quali file dobbiamo copiare?" problema. Stai già usando i tag git? Altrimenti, inizia a usarli!

2

Se git è la scelta giusta, è una buona domanda.

Ma se hai intenzione di farlo devi leggere la pagina di manuale gitworkflows. Specificamente, ciò che raccomanderà e ciò che suona bene dato il tuo problema sopra è che devi mettere ogni "cosa" separata da sviluppare in un ramo argomento/funzione, e quindi unire quel ramo nell'albero giusto quando è fatto. Ciò ti consente di separare le cose in modo da unire ciò che è necessario e stabile e non fondere ciò che non lo è.

0

Attualmente sto usando git in questo modo e ho appena pubblicato un articolo sul blog here.

Quello che faccio di solito è usare un hook di post-ricezione per cercare i commit inseriti in un ramo di rilascio, e quando viene trovato distribuisce il codebase usando il comando git archive.

Questo va bene per i progetti di piccole dimensioni, se si hanno più sviluppatori che lavorano su un progetto o si tratta di una base di codice ampia e complessa, consiglio l'uso di un sistema di integrazione continua come Jenkins come suggerito in un precedente commento.

Date un'occhiata a questo e vedere se si adatta alle vostre esigenze (include un semplice script di distribuzione bash)

Acclamazioni

2

Ho finito per creare il mio rudimentale strumento di distribuzione che estrae automaticamente i nuovi aggiornamenti dal repository - https://github.com/jesalg/SlimJim - Non penso che soddisfi esattamente le tue esigenze ma puoi leggere come è configurato e forse potresti ottenere un po ' idee fuori di esso.

Problemi correlati