2012-05-10 6 views
7

Prima di iniziare, so che ci sono molte domande simili a questa, ma ho davvero difficoltà a trovare una pratica concisa, sicura, poiché il feedback su di loro è stato così ampio.Come si fa un lancio automatico di git sul server remoto?

Che cosa voglio fare: 1) Completare il lavoro sul mio computer locale su un ramo di sviluppo. 2) Premi le modifiche a git. Git pubblica un URL webhook e automaticamente il mio server remoto carica le modifiche su un sito di sviluppo. 3) Una volta che il QA è stato confermato e confermato nel sito di sviluppo, inserire il ramo principale nel sito di produzione (sullo stesso server del sito di sviluppo).

Dove sono a: Ho git installato sul mio computer locale e sul server remoto. Posso spingere le mod per il ramo di sviluppo per git. Sul server remoto, posso tirare gli aggiornamenti e funziona come un fascino. Il problema è che non riesco a far aggiornare automaticamente il server remoto quando le modifiche vengono trasferite dal mio computer locale.

Le mie domande sono: 1) Per la directory del sito di sviluppo server remoto, dovrei git init o git init --bare? Non ho intenzione di avere aggiornamenti fatti sul server stesso. Vorrei che il mio team di sviluppo lavorasse localmente e spingere i mod sul server. Credo di aver bisogno di usare git init poichè l'albero di lavoro è necessario per impostare un alias remoto nel repository git, ma volevo confermarlo. 2) Sono abbastanza sicuro che il post webhook di git è dovuto ai privilegi dell'utente. Come posso risolvere il problema con ? Ho letto molti tutorial che suggeriscono l'aggiornamento dei file hook git, ma mi sento come se fosse una misura più drastica di quella che devo prendere. Mi piacerebbe essere in grado di far sì che il webhook colpisca un URL che estrae in modo sicuro i file senza aggiungere un carico di codice (se possibile).

Sono uno sviluppatore web per natura, quindi i compiti di git e sysadmin sono generalmente la rovina della mia esistenza. Ancora una volta, so che questa domanda è simile alle altre, ma devo ancora trovare un approccio completo, conciso, sicuro e logico per risolvere il problema. Sono circa 16 ore in e ho ufficialmente colpito il punto "andare in circolo senza progresso".

Grazie mille in anticipo per tutto il vostro aiuto!

+0

Wow è una specie di impossibilità di trovare una semplice soluzione a questo. Mi fa perdere SVN un po '... – Jake

risposta

2

Ho avuto lo stesso esatto problema, forte capacità di codice e sviluppo, debole nelle abilità di sysadmin. Quando finalmente sono stato pronto a spingere il codice, ho dovuto chiedere a un rappresentante di GitHub quale fosse il loro metodo suggerito e hanno risposto con Capistrano. Si tratta di un'applicazione Ruby che esegue comandi (come git pull) su server remoti e praticamente qualsiasi altro comando che si possa immaginare.

Ecco alcuni articoli si può leggere per maggiori informazioni:

Non intenzione di mentire, l'imparare la curva è stata piuttosto ripida, ma una volta iniziato a lavorare con Capistrano, vedrai che funziona bene per spingere il codice. Sviluppo le mie applicazioni in Symfony e ho il mio set di Capistrano per estrarre il codice, svuotare la cache e cancellare i file di registro, tutto in un unico comando dalla mia macchina locale.

+1

Questo aiuto a tutti? –

9

Si può fare abbastanza facilmente con ganci di servizio GitHub.

È necessario creare un altro file che gestirà il processo di esecuzione di Git Pull. Aggiungere un nuovo file, chiamato github.php (o qualsiasi cosa che si desidera), e aggiungere:

<?php `git pull`; 

Salva il file e caricarlo nella directory repository sul server. Quindi, vai su Services Hooks -> Post-Receive URL e copia l'URL su quel file e incollalo nell'URL "Post-Receive". http://demo.test.com/myfolder/github.php

Così, quando si preme, GitHub visiterà automaticamente questo URL, causando così il server per eseguire un git pull.

Per vedere questo in ulteriori dettagli per andare a this tutorial

+0

Funziona benissimo. – Lokesh