Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save VoVanToan26/b8ad6b7b1dcc4fd91c1cebcc09c700f8 to your computer and use it in GitHub Desktop.
Save VoVanToan26/b8ad6b7b1dcc4fd91c1cebcc09c700f8 to your computer and use it in GitHub Desktop.
git auto deploy from local machine to remote server
References: https://gist.github.com/noelboss/3fe13927025b89757f8fb12e9066f2fa
More info: https://www.digitalocean.com/community/tutorials/how-to-use-git-hooks-to-automate-development-and-deployment-tasks
https://www.youtube.com/watch?v=6mYtJu0E47U
log to your remote server root user
ssh root@ip
sudo adduser user sudo
ssh [email protected]
mkdir ~/deploy-folder
git init --bare ~/project.git
cd ~/project.git/hooks
nano post-receive
copy/paste the bash script #!/bin/bash
Copy and paste below script
#!/bin/bash
while read oldrev newrev ref
do
# only checking out the master (or whatever branch you would like to deploy)
if [[ $ref =~ .*/master$ ]];
then
echo "Master ref received. Deploying master branch to production..."
git --work-tree=/home/inspire/deploy-folder/ --git-dir=/home/inspire/repo.git/ checkout -f
else
echo "Ref $ref successfully received. Doing nothing: only the master branch may be deployed on this server."
fi
done
# end of file
chmod +x post-receive
type ls [you'll see post-receive file green meaning it's executable now]
type pwd [make sure your file directory is same as your script]
go to your local computer, and go to the folder you want to git. Use git bash program, and go to the folder if you're on windows
cd ~/path/to/working-copy/
git init
git remote add production [email protected]:/home/user/project.git
now make a file, add it to your git, commit it and push it to production server
nano test.txt [then add some text, ctrl x and save it]
git add .
git commit -m 'test1'
git push production master
now go to your server and go to your deploy folder, you'll see test.txt file in there
#!/bin/bash
while read oldrev newrev ref
do
# only checking out the master (or whatever branch you would like to deploy)
if [[ $ref =~ .*/master$ ]];
then
echo "Master ref received. Deploying master branch to production..."
git --work-tree=/home/inspire/deploy-folder/ --git-dir=/home/inspire/repo.git/ checkout -f
else
echo "Ref $ref successfully received. Doing nothing: only the master branch may be deployed on this server."
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment