public
Description: Official GitHub Services Integration
Homepage: http://github.com/blog/53-github-services-ipo
Clone URL: git://github.com/pjhyett/github-services.git
pjhyett (author)
Tue Nov 03 17:00:53 -0800 2009
commit  6b560a1e4b53174f49eac1a138efa17573f82ff5
tree    42fb008bf6acb08ab229e5cc05944d886f231c4e
parent  4b41c93e017e5465aac0cbf90ee5c2f79b688b22
github-services / README.mkdn
100644 62 lines (48 sloc) 2.438 kb

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

How to test your service

  1. Start the github-services Sinatra server with ruby github-services.rb. By default, it runs on port 8080.
  2. Edit the doc/github_payload file as necessary to test your service. (Usually just editing the "data" values but leaving the "payload" alone.)
  3. Send the doc/github_payload file to your service by calling: ./script/deliver_payload [service-name]

NOTE: The name of the service and your docs/ file matters. If your service is RunCodeRun, your service and docs MUST be run_code_run. Good luck!