2013-04-10 61 views
5

私はec2 instance @ ubuntuを使っています。私はAMIから新しいインスタンスを起動した後、自動的に "git pull"を実行しようとしています。 repo dirはすでに私のAMIに入っています。私はrepoを更新するだけです。サーバーの起動時に "git pull"を自動的に行うにはどうすればいいですか?

+0

が、これはあなたにヒントを与えるかもしれませんrc-local-run-on-startup – rcomblen

答えて

2

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

+0

私はそれを働かせました。 – Wen

4

を動作するはず

私が今やっていることは、私はrc.localにに「gitのプル原点マスター」を入れている....しかし、それは動作しません....私はそれを得ました動作するように..

はsudo -u Ubuntuの-iのgit --git-DIR = /ホーム/ Ubuntuの/ blastoff/.git --workツリー= /ホーム/ Ubuntuの/ blastoff /フェッチ起源 のsudo -uのubuntu -i git --git-dir =/home/ubuntu/blastoff/.git --work-tree =/home/ubuntu/blastoff /マージ元/マスター

0

コードを置く場所は/etc/rc.local/ではなく、~/.profileです。 sudoまたはsuを使わずに、コマンドを実行しているユーザーを変更するために、ログインしたユーザーとしてコマンドを実行できます。

0

https://stackoverflow.com/a/8880633/659188からノートを取り、上記のあなたの作業の答えは、あなたがあなたのrc.localファイル内でこのような何かを行うことによって、潜在的に複数のフォルダにこれを適用することができ(また、唯一常にあること、マスターするのではなく、現在のブランチを引く):

#!/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

git pullをインスタンス作成時(最初の起動時)に実行する場合は、cloud-initを使用できます。

AWSドキュメントにTo pass a shell script to an instance with user data

を確認してくださいこれはansible/saltstackなどを使用することによって自動化することができますが、テストのために、手動でスクリプトをアップロードすることができます。 Advance Detailsのステップ3「Configure instance」で、「As file」オプションを選択し、スクリプトを下に置きます。

enter image description here

あなたはそこにあなたのカスタムスクリプトをアップロードすることもできますhttp://askubuntu.com/questions/9853/how-can-i-make-:

#!/bin/sh 

echo "git pull or any other custom commands here"