Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 15 You must be signed in to fork a gist
  • Save inspiretk/a0aa0aebb98b69af51f86abcd55b6f72 to your computer and use it in GitHub Desktop.
Save inspiretk/a0aa0aebb98b69af51f86abcd55b6f72 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
[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 user@server.com
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 user@YourServerDomain.com:/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
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 user@cellardrop.com.au
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 user@cellardrop.com.au:/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
#!/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
# 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
# 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