Deploy your GitHub, GitLab or Bitbucket projects automatically on Git push events or webhooks using this small HTTP server written in Python. Continuous deployment in it's most simple form.
Git-Auto-Deploy consists of a small HTTP server that listens for Webhook requests sent from GitHub, GitLab or Bitbucket servers. This application allows you to continuously and automatically deploy your projects each time you push new commits to your repository.
When commits are pushed to your Git repository, the Git server will notify Git-Auto-Deploy
by sending an HTTP POST request with a JSON body to a pre-configured URL (your-host:8001). The JSON body contains detailed information about the repository and what event that triggered the request. Git-Auto-Deploy
parses and validates the request, and if all goes well it issues a git pull
.
Additionally, Git-Auto-Deploy
can be configured to execute a shell command upon each successful git pull
, which can be used to trigger custom build actions or test scripts.
You can install Git-Auto-Deploy
in multiple ways. Below are instructions for the most common methods.
Using Debian? Have a look at this answer for instructions.
Add our PPA repository.
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:olipo186/git-auto-deploy
sudo apt-get update
Install Git-Auto-Deploy
using apt.
sudo apt-get install git-auto-deploy
Modify the configuration file to match your project setup. Read more about the configuration options.
nano /etc/git-auto-deploy.conf.json
Optional: Copy any private SSH key you wish to use to the home directory of GAD. Check out this document for more on SSH keys
sudo cp /path/to/id_rsa /etc/git-auto-deploy/.ssh/
sudo chown -R git-auto-deploy:git-auto-deploy /etc/git-auto-deploy
Start Git-Auto-Deploy
and check it’s status.
service git-auto-deploy start
service git-auto-deploy status
When installing Git-Auto-Deploy
from the repository, you’ll need to make sure that Python (tested on version 2.7) and Git (tested on version 2.5.0) is installed on your system.
Clone the repository.
git clone https://github.com/olipo186/Git-Auto-Deploy.git
Install the dependencies with pip, a package manager for Python, by running the following command.
sudo pip install -r requirements.txt
If you don’t have pip installed, try installing it by running this from the command
line:
curl https://bootstrap.pypa.io/get-pip.py | python
Copy of the sample config and modify it. Read more about the configuration options. Make sure that pidfilepath
is writable for the user running the script, as well as all paths configured for your repositories.
cd Git-Auto-Deploy
cp config.json.sample config.json
Start Git-Auto-Deploy
manually using;
python -m gitautodeploy --config config.json
To start Git-Auto-Deploy
automatically on boot, open crontab in edit mode using crontab -e
and add the entry below.
@reboot /usr/bin/python -m /path/to/Git-Auto-Deploy/gitautodeploy --daemon-mode --quiet --config /path/to/git-auto-deploy.conf.json
You can also configure Git-Auto-Deploy
to start on boot using an init.d-script (for Debian and Sys-V like init systems) or a service for systemd.Read more about starting Git-Auto-Deploy automatically using init.d or systemd.
GAD runs under Windows but requires some requisites.
C:\Python27
and C:\Python27\Scripts
is part of the PATH system environment variable.get-pip.py
scriptC:\Program Files\Git\cmd
is added (should have been added automatically by the installer) as well as C:\Program Files\Git\bin
(not added by default).Below is a summarized list of the most common command line options. For a full list of available command line options, invoke the application with the argument --help
or read the documentation article about all available command line options, environment variables and config attributes.
Command line option | Environment variable | Config attribute | Description |
---|---|---|---|
–daemon-mode (-d) | GAD_DAEMON_MODE | Run in background (daemon mode) | |
–quiet (-q) | GAD_QUIET | Supress console output | |
–config (-c) |
GAD_CONFIG | Custom configuration file | |
–pid-file |
GAD_PID_FILE | pidfilepath | Specify a custom pid file |
–log-file |
GAD_LOG_FILE | logfilepath | Specify a log file |
–host |
GAD_HOST | host | Address to bind to |
–port |
GAD_PORT | port | Port to bind to |
To make your git provider send notifications to Git-Auto-Deploy
you will need to provide the hostname and port for your Git-Auto-Deploy
instance. Instructions for the most common git providers is listed below.
GitHub
GitLab
Bitbucket
Have a look in the docs directory, where you’ll find more detailed documentation on configurations, alternative installation methods, and example workflows.