alwaysdata Autodeploy Git Hook
A simple bash script to deploy on production using Git hooks.
This script simply checkout the last version of a given branch (e.g a production branch) to a working directory. It updates your files and ensure your website / service is properly updated.
To get it working, create a bare repository on your remote server and place the post-receive
hook script in its hooks directory:
$ git init --bare ~/project.git
$ curl -L -o ~/project.git/hooks/post-receive https://raw.githubusercontent.com/alwaysdata/autodeploy-git-hook/master/post-receive
$ chmod +x project.git/hooks/post-receive
The script embed some variables you need to define to get it working properly. They are declared at the top of the post-receive
file, feel free to adapt them to your needs:
TARGET
: the directory where the files need to be deployedGIT_DIR
: the current git bare repository pathBRANCH
: the branch to deploy (default toproduction
)
In case you want to restart your app after deploy, you need to fill:
RESTART
: a boolean to enable restart (default tofalse
)API_KEY
: your api key you can find in your profile sectionACCOUNT
: the account name your site is associated toPASSWORD
: the account password your site is associated toSITE_ID
: the reference ID of your site you can find in your sites sectionNPM_INSTALL_CHECK
: a boolean to enable if your site is a Node.js site, and if you want to automatically runnpm install
if your package.json changed since the last push (default tofalse
)
In your local repository, simply define a new remote, then push your production (or the branch you set in config) to this remote:
$ cd project
$ git remote add deploy <account>@ssh-<account>.alwaysdata.net:~/project.git
$ git checkout production
$ git push deploy production
The script logs actions in your git terminal, so the Git push
action will show you that your deploy is OK or not.
Feel free to contribute to the project by opening pull-requests, or fill issues that will let us improve it. Thanks 🍻 !
Release under MIT LICENSE.
For more information, you can take a look at our blog post about how to deploy using Git Hooks.