Tech/HowTo/Deployment with Git Hooks
Jump to navigation
Jump to search
Devops without the extra parts
You want to deploy code onto a server into a certain directory. You have SSH to the server and it has Tech/OSS/Git installed. Your desired destination is /home/user/public_html/production/
- Target server
on the remote server lets create a directory, and create a bare repo
cd /home/user/
mkdir myproject
mkdir -p public_html/production
cd myproject
git init --bare
Next lets copy the sample hook to activate it and open it in an editor, use whatever editor you like.
cp hooks/post-update.sample hooks/post-update <editor> hooks/post-update
Add/change it to be something like this.
#!/bin/bash
branch=$(git rev-parse --symbolic --abbrev-ref $1)
if [ "production" == "$branch" ]; then
GIT_WORK_TREE=/home/user/public_html/production git checkout -f production
echo "exported to production"
fi
- Local system
Clone or add as remote to your existing repo
git clone ssh://user@myserver.example.com:/home/user/myproject
make a production branch and push.. (note your origin config if you are using many remotes)
cd myproject
git checkout -b production
echo "AUTOMATION" > README
git add README
git commit -m "Andrew is so nice"
git push origin production
You should see something like
Counting objects: 1, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1/1), done.
Writing objects: 100% (1/1), 334 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: exported to production
To ssh://myserver.example.com:/home/user/myproject
ad720c2..8e42f1b production -> production
So now all you have to do is develop in your development or feature branches and maybe merge to main. When it is time to deploy merge to production and push!