我的服务器启动时如何自动执行“git pull”

时间:2013-04-10 20:27:17

标签: git ubuntu amazon-ec2

我正在使用ec2 instance @ ubuntu。我试图从我的AMI启动一个新实例后自动执行“git pull”。 repo dir已经在我的AMI中,我需要的只是更新回购。

我现在正在做的是我在rc.local中放了“git pull origin master”....但它不起作用....

5 个答案:

答案 0 :(得分:4)

我得到了它的工作..

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

答案 1 :(得分:3)

git --git-dir=some/dir/.git pull origin master应该有效

答案 2 :(得分:0)

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

答案 3 :(得分: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

答案 4 :(得分: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"