2013-04-10 21 views
5

Sto usando ec2 instance @ ubuntu. Sto cercando di fare automaticamente "git pull" dopo aver lanciato una nuova istanza dalla mia AMI. La directory repo è già nella mia AMI, tutto ciò di cui ho bisogno è aggiornare il repository.come posso fare "git pull" automaticamente all'avvio del mio server

quello che sto facendo ora è ho messo "git origine tirare master" in rc.local .... ma non funziona ....

+0

questo potrebbe darvi un suggerimento: http://askubuntu.com/questions/9853/how-can-i-make- rc-local-run-on-startup – rcomblen

risposta

2

git --git-dir=some/dir/.git pull origin master dovrebbe funzionare

+0

Ho capito che funziona ... – Wen

4

ho preso per lavorare ..

sudo -u ubuntu -i git --git-dir =/home/ubuntu/blastoff/.git --work-tree =/home/ubuntu/blastoff/origine fetch sudo -u ubuntu -i git --git-dir =/home/ubuntu/blastoff/.git --work-tree =/home/ubuntu/blastoff/unione origine/master

0

Il posto giusto per mettere il codice non è /etc/rc.local/ ma ~/.profile. È quindi possibile eseguire comandi come utente connesso senza la necessità di sudo o su per modificare l'utente che esegue i comandi.

0

prendere appunti da https://stackoverflow.com/a/8880633/659188 e la tua risposta a lavorare sopra, si potrebbe applicare questo potenzialmente più cartelle facendo qualcosa di simile nel file rc.local (anche tira solo ramo corrente invece di essere sempre padrone):

#!/bin/bash -e 
# /etc/rc.local 

# Ensure folders in array have a trailing slash! 

declare -a folders=("/var/www/html/project1/" "/var/www/html/project2/" "/some/other/location/") 

# Update to latest in all above folders 

for i in "${folders[@]}" 
do 
     sudo -u ubuntu -i git --git-dir=$i/.git --work-tree=$i fetch origin 
     sudo -u ubuntu -i git --git-dir=$i/.git --work-tree=$i pull 
done 

exit 0 
0

Se si desidera eseguire git pull quando l'istanza è stata creata (primo avvio), è possibile utilizzare cloud-init.

Controllare la documentazione AWS To pass a shell script to an instance with user data

Questo potrebbe essere automatizzato tramite ansible/saltstack ecc, ma per il test, è possibile caricare manualmente lo script. Al punto 3 "Configura istanza" in Dettagli avanzati, seleziona l'opzione Come file e inserisci lo script di seguito.

enter image description here

Si potrebbe caricare lì lo script personalizzato:

#!/bin/sh 

echo "git pull or any other custom commands here" 
Problemi correlati