Skip to content

antoniopaisfernandes/Git-Auto-Deploy

 
 

Repository files navigation

What is it?

Git-Auto-Deploy consists of a small HTTP server that listens for Web hook requests sent from GitHub, GitLab or Bitbucket servers. This application allows you to continuously and automatically deploy you projects each time you push new commits to your repository.

workflow

How does it work?

When commits are pushed to your Git repository, the Git server will notify Git-Auto-Deploy by sending a 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.

Getting started

Dependencies

  • Git (tested on version 2.5.0)
  • Python (tested on version 2.7)

Install from repository (recommended)

Download and install

git clone https://github.com/olipo186/Git-Auto-Deploy.git
cd Git-Auto-Deploy

Configuration

Make a copy of the sample configuration file and modify it to match your project setup. Read more about the configuration options.

cp config.json.sample config.json

Tip: Make sure that the path specified in pidfilepath is writable for the user running the script, as well as any other path configured for your repositories.

Running the application

Run the application my invoking python and referencing the gitautodeploy module (the directory Git-Auto-Deploy/gitautodeploy).

python gitautodeploy

Start automatically on boot

The easiest way to configure your system to automatically start Git-Auto-Deploy after a reboot is using crontab. Open crontab in edit mode using crontab -e and add the entry below.

@reboot /usr/bin/python /path/to/Git-Auto-Deploy/gitautodeploy --daemon-mode --quiet --config /path/to/git-auto-deploy.conf.json

Tip: You can also configure Git-Auto-Deploy to start automatically using a 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](./docs/Start automatically on boot.md).

Alternative installation methods

  • [Install as a python module (experimental)](./docs/Install as a python module.md)
  • [Install as a debian package (experimental)](./docs/Install as a debian package.md)
  • [Start automatically on boot (init.d and systemd)](./docs/Start automatically on boot.md)

Command line options

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 avaialble 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

Getting webhooks from git

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

  1. Go to your repository -> Settings -> Webhooks and Services -> Add webhook
  2. In "Payload URL", enter your hostname and port (your-host:8001)
  3. Hit "Add webhook"

GitLab

  1. Go to your repository -> Settings -> Web hooks
  2. In "URL", enter your hostname and port (your-host:8001)
  3. Hit "Add Web Hook"

Bitbucket

  1. Go to your repository -> Settings -> Webhooks -> Add webhook
  2. In "URL", enter your hostname and port (your-host:8001)
  3. Hit "Save"

More documentation

Have a look in the docs directory, where you'll find more detailed documentation on configurations, alternative installation methods and example workflows.

About

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.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 78.7%
  • Shell 18.5%
  • Makefile 2.8%