2013-04-10 74 views
5

我正在使用ec2 instance @ ubuntu。我尝试从AMI启动新实例后自动执行“git pull”。回购目录已经在我的AMI中,我需要的只是更新回购。当我的服务器启动时,我该如何自动执行“git pull”

什么我现在做的是我把“混帐拉起源大师”在rc.local中....但它不工作....

+0

这可能给你一个提示:http://askubuntu.com/questions/9853/how-can-i-make- rc-local-run-on-startup – rcomblen 2013-04-10 20:51:02

回答

2

git --git-dir=some/dir/.git pull origin master应该工作

+0

我懂了它的工作原理 – Wen 2013-04-10 21:22:08

4

我得到了它工作..

须藤-u Ubuntu的-i混帐--git-DIR = /家庭/ Ubuntu的/升空/ git的 - 共同努力树= /家庭/ Ubuntu的/升空/取起源 须藤-u的ubuntu -i git --git-dir =/home/ubuntu/blastoff/.git --work-tree =/home/ubuntu/blastoff/merge origin/master

0

The放置代码的地方不是/etc/rc.local/,而是~/.profile。然后,您可以以登录用户身份运行命令,而不需要sudosu来更改运行命令的用户。

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等,但进行测试,你可以手动上传脚本自动化。在高级详细信息的第3步“配置实例”中,选择选项作为文件,并将脚本放在下面。

enter image description here

你可以上传你有自定义脚本:

#!/bin/sh 

echo "git pull or any other custom commands here" 
相关问题