Forked from inspiretk/git auto deploy from local machine to remote server
Created
August 3, 2020 02:39
-
-
Save TardencillaRuiz/8b9783cffef404b39b445ba22bb2d29d to your computer and use it in GitHub Desktop.
git auto deploy from local machine to remote server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
[misc commands deluser newuser] | |
The following steps is for Developers to push their code from their local machine, to their server with git, and let git auto | |
pull the update to your remote folder. How it works: | |
- From your local machine, you do your normal coding. When done, you push your new code to git | |
- Git then updates your local machine, and push it to your server's git | |
- Git on your server gets the new update, and push it to your server's working folder | |
log to your remote server as normal: | |
ssh YourUsername@YourIPorDomain [NOTE: in youtube video https://youtu.be/k3BYVduyjyI I've already added my ssh key and ssh agent in. | |
If your server reject you because of ssh key, you'll need to add it into your server. If you don't need ssh key, you'll be fine] | |
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/user/deploy-folder/ --git-dir=/home/user/project.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 | |
# To see the new remote that you've added | |
git remote -v | |
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 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
[misc commands deluser newuser] | |
The following steps is for Developers to push their code from their local machine, to their server with git, and let git auto | |
pull the update to your remote folder. How it works: | |
- From your local machine, you do your normal coding. When done, you push your new code to git | |
- Git then updates your local machine, and push it to your server's git | |
- Git on your server gets the new update, and push it to your server's working folder | |
log to your remote server as normal: | |
ssh YourUsername@YourIPorDomain [NOTE: in youtube video https://youtu.be/k3BYVduyjyI I've already added my ssh key and ssh agent in. | |
If your server reject you because of ssh key, you'll need to add it into your server. If you don't need ssh key, you'll be fine] | |
sudo adduser user | |
sudo adduser user sudo | |
ssh [email protected] | |
sudo git init --bare project.git | |
cd project.git/hooks | |
sudo nano post-receive | |
# copy/paste the bash script #!/bin/bash. Double check your script copy/paste as it does not copy properly. | |
# the line while read oldrev newrev ref - ends with ref but copy/paste will make it ref do, so put do on next line | |
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=/odoo/odoo-server/addons/ --git-dir=/home/user/project.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 | |
sudo 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] | |
# cd into your odoo addon folder | |
# pwd to get the folder path | |
# cd /odoo/odoo-server/addons | |
pwd | |
# give user permission for odoo/addons folder | |
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-odoo-addon-folder/ | |
# cd c:/thuani11/addons | |
git init | |
git remote add production [email protected]:/home/user/project.git | |
# To see the new remote that you've added | |
git remote -v | |
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 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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/user/deploy-folder/ --git-dir=/home/user/project.git/ checkout -f | |
else | |
echo "Ref $ref successfully received. Doing nothing: only the master branch may be deployed on this server." | |
fi | |
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# give permission to username user to control your git project folder | |
sudo chown -R user /home/user/project.git | |
# ubuntu 18.04 where is git installed | |
# ubuntu 18.04 git folder location | |
# ubuntu 18.04 give other sudo users git access | |
login as root | |
visudo | |
git --version | |
which git | |
# give user user git access, odoo acess, and project.git access | |
sudo chown -R user:user /usr/bin/git | |
sudo chown -R user:user /usr/bin/git-receive-pack | |
sudo chown -R user:user /usr/bin/git-shell | |
sudo chown -R user:user /usr/bin/git-upload-archive | |
sudo chown -R user:user /usr/bin/git-upload-pack | |
sudo chown -R user:user /odoo/odoo-server/addons | |
sudo chown -R user:user /home/user/project.git | |
sudo chown -R user /home/user/project.git | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# sphinx build directories | |
_build/ | |
# dotfiles | |
.* | |
!.gitignore | |
!.mailmap | |
# compiled python files | |
*.py[co] | |
__pycache__/ | |
# setup.py egg_info | |
*.egg-info | |
# emacs backup files | |
*~ | |
# hg stuff | |
*.orig | |
status | |
# odoo filestore | |
odoo/filestore | |
# maintenance migration scripts | |
odoo/addons/base/maintenance | |
# generated for windows installer? | |
install/win32/*.bat | |
install/win32/meta.py | |
# needed only when building for win32 | |
setup/win32/static/less/ | |
setup/win32/static/wkhtmltopdf/ | |
setup/win32/static/postgresql*.exe | |
# various virtualenv | |
/bin/ | |
/build/ | |
/dist/ | |
/include/ | |
/lib/ | |
/man/ | |
/share/ | |
/src/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment