Skip to content
Small sinatra app for to pointing Github posthooks to and running scripts in response.
Ruby
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib
public
scripts
.gitignore
README.mdown
config.ru
post_hook.rb

README.mdown

Post Hook is a simple Sinatra template for use with Web Hooks

Post hook is currently setup to run under Phusion Passenger (though not required) for use with Github service hooks.

Requirements

Post hook relies on a number of rubygems: sinatra - well to run, it's a sinatra app after all rack - for logging active_support - for JSON parsing popen4 - for running shell commands and capturing the return values

Github Service Hook JSON template and example.

Current as of Wednesday, August 26th, 2009. See http://github.com/guides/post-receive-hooks for most up to date definition

JSON Template

{ :before => before, :after => after, :ref => ref, :commits => [{ :id => commit.id, :message => commit.message, :timestamp => commit.committed_date.xmlschema, :url => commit_url, :added => array_of_added_paths, :removed => array_of_removed_paths, :modified => array_of_modified_paths,
:author => { :name => commit.author.name, :email => commit.author.email } }], :repository => { :name => repository.name, :url => repo_url, :pledgie => repository.pledgie.id, :description => repository.description, :homepage => repository.homepage, :watchers => repository.watchers.size, :forks => repository.forks.size, :private => repository.private?,
:owner => { :name => repository.owner.login, :email => repository.owner.email } } }

JSON Example

{ "before": "5aef35982fb2d34e9d9d4502f6ede1072793222d", "repository": { "url": "http://github.com/defunkt/github", "name": "github", "description": "You're lookin' at it.", "watchers": 5, "forks": 2, "private": 1, "owner": { "email": "chris@ozmm.org", "name": "defunkt" } }, "commits": [ { "id": "41a212ee83ca127e3c8cf465891ab7216a705f59", "url": "http://github.com/defunkt/github/commit/41a212ee83ca127e3c8cf465891ab7216a705f59", "author": { "email": "chris@ozmm.org", "name": "Chris Wanstrath" }, "message": "okay i give in", "timestamp": "2008-02-15T14:57:17-08:00", "added": ["filepath.rb"] }, { "id": "de8251ff97ee194a289832576287d6f8ad74e3d0", "url": "http://github.com/defunkt/github/commit/de8251ff97ee194a289832576287d6f8ad74e3d0", "author": { "email": "chris@ozmm.org", "name": "Chris Wanstrath" }, "message": "update pricing a tad", "timestamp": "2008-02-15T14:36:34-08:00" } ], "after": "de8251ff97ee194a289832576287d6f8ad74e3d0", "ref": "refs/heads/master" }

Something went wrong with that request. Please try again.