node package manager
Easy sharing. Manage teams and permissions with one click. Create a free org »

git-autopull

Git Autopull

Autopull listens on http for git change events (can be configured via Github Webhooks) and when it detects a change, it automatically does a git pull.

Install

It is recommended to install this globally.

$> npm install -g git-autopull

Prerequisites

  • Currently only works with Github projects. You need to configure a Webhook.
  • The path and secret configured in the webhook need to be passed as environment variables.
  • The working directory needs to be from within the cloned git repository that is being watched.

Environment variables

There are a lot of environment variables that can be specified.

Environment Variable Default Value Description
WEBHOOK_PATH /event The URL path that the git-autopull client should listen on
WEBHOOK_SECRET secret The secret configured on github for this webhook
WEBHOOK_EVENT push An optional filter to specify what event or events (comma separated strings) to listen for. If not specified, it will only listen on push events.
WEBHOOK_REPO_ID no default If specified, autopull will only happen for this repo
WEBHOOK_REPO_NAME no default If specified, autopull will only happen for this repo
WEBHOOK_REMOTE origin The name of the git remote to pull.

Usage

An example raw usage is as below:

$> WEBHOOK_PATH=/github WEBHOOK_SECRET=secret git-autopull

Unfortunately, this is less than ideal particularly on server environments. It is better to daemonize this via forever as follows:

$> [sudo] npm install -g forever
$> WEBHOOK_PATH=/github WEBHOOK_SECRET=secret forever start -p /usr/local/var/git-autopull -l forever.log -o forever.out -e forever.err -c git-autopull

TODO

  • Add support for running arbitrary commands instead of git commands
  • Add binary script which will use forever correctly