我正在使用ec2 instance @ ubuntu。我试图从我的AMI启动一个新实例后自动执行“git pull”。 repo dir已经在我的AMI中,我需要的只是更新回购。
我现在正在做的是我在rc.local中放了“git pull origin master”....但它不起作用....
答案 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
。然后,您可以以登录用户身份运行命令,而无需sudo
或su
来更改运行命令的用户。
答案 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“配置实例”中,选择选项作为文件并将脚本放在下面。
您可以上传自定义脚本:
#!/bin/sh
echo "git pull or any other custom commands here"