pjhyett / github-services

Official GitHub Services Integration

This URL has Read+Write access

commit  b07b0a3203b19e657dd7c938151562e915dc69ee
tree    b599c9dc2da32fc708d960ac8247d5b610fda5b7
parent  628a042982cfbef39589736baac7814e39d786f7
name age message
file .gitignore Wed Jul 09 22:18:36 -0700 2008 Improving email format. This includes a second... [eric]
file CONTRIBUTORS Sun Jan 25 20:53:48 -0800 2009 More thanks [pjhyett]
file LICENSE Mon Jul 14 01:30:49 -0700 2008 add LICENSE [pjhyett]
file README.mkdn Loading commit data...
file Rakefile Tue May 06 02:08:47 -0700 2008 Added Rakefile with a RSpec task to make runnin... [Luke Redpath]
directory docs/ Tue Jul 14 10:13:29 -0700 2009 Changed twitter behaviour to have the ability t... [jmkogut]
file github-services.rb Fri Jun 12 15:29:06 -0700 2009 set the environment and port explicitly [pjhyett]
directory services/ Wed Aug 05 21:41:18 -0700 2009 Add spam protection to campfire service [tekkub]
directory spec/ Wed Nov 12 11:49:45 -0800 2008 Moved experimental testing framework into it's ... [Luke Redpath]
directory vendor/ Tue Apr 28 18:15:54 -0700 2009 don't need this either [pjhyett]
README.mkdn

GitHub Services

How the services work

  1. A post-receive background job is submitted when someone pushes their commits to GitHub
  2. If the repository the commits belong to has any "Service Hooks" setup, the job makes a request to http://services-server/service_name/ with the following data:
    • params[:payload] containing all of the commit data (the same data you get using the API)
    • params[:data] containing the service data (username, password, room, etc)
  3. Sinatra (github-services.rb) processes the request (twitters your data, says something in campfire, posts it to lighthouse, etc)
  4. Rinse and repeat

Steps to contributing

  1. Fork the project
  2. Create a new file in /services/ called service_name.rb, using the following template:

    service :service_name do |data, payload|
    end
    
  3. Vendor any external gems your code relies on, and make sure to include it in the requires at the top of github-services.rb

  4. Add documentation to docs/service_name (refer to the others for guidance)
  5. Add your name to the CONTRIBUTORS file
  6. Create an Issue at http://github.com/pjhyett/github-services/issues with links to each commit you want included.
  7. Once it's accepted we'll add any new necessary data fields to the GitHub front-end so people can start using your addition.

Patches including tests are encouraged

Running the server locally

  1. [sudo] gem install hpricot
  2. git clone git://github.com/pjhyett/github-services.git
  3. cd github-services
  4. ruby github-services.rb

  5. Bugs in the code should be filed under the Issues tab

  6. Problems with the service hooks can be filed here: http://support.github.com/discussions/post-receive-issues