Coder Social home page Coder Social logo

gotemb / github-services Goto Github PK

View Code? Open in Web Editor NEW

This project forked from github/github-services

1.0 1.0 0.0 12.77 MB

Official GitHub Services Integration - You can set these up in your repo admin screen under Service Hooks

Home Page: http://github.com/blog/53-github-services-ipo

License: MIT License

Ruby 100.00%

github-services's Introduction

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/push 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:

    class Service::ServiceName < Service
      def receive_push
      end
    end
  3. Vendor any external gems your code relies on, and make sure it is specified in the Gemfile.

  4. Add documentation to docs/service_name (refer to the others for guidance)

  5. Send a pull request from your fork to github/github-services

  6. 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

A huge thanks goes out to our many contributors!

Running the server locally

  1. [sudo] gem install hpricot
  2. git clone git://github.com/github/github-services.git
  3. cd github-services
  4. ruby github-services.rb
  • Bugs in the code should be filed under the Issues tab
  • Problems with the service hooks can be filed here

How to test your service

You can test your service in a ruby irb console:

  1. Run rake console to start irb.

  2. Instantiate your Service:

    svc = Service::MyService.new(:push,
      # Hash of configuration information.
      {'token' => 'abc'},
      # Hash of payload.
      {'blah' => 'payload!'})
    
    svc.receive_push
  3. The third argument is optional if you just want to use the sample payload.

    svc = Service::MyService.new(:push,
      # Hash of configuration information.
      {'token' => 'abc'})
    
    svc.receive_push

You can also use this one-liner in the shell instead:

bundle exec ruby -r config/load.rb -r services/myservice.rb -e \
  "Service::MyService.new(:push, {'foo' => 'bar'}).receive_push"

You can also test your hook with the Sinatra web service:

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

github-services's People

Contributors

aitorciki avatar atmos avatar benburkert avatar caldwell avatar dagwieers avatar defunkt avatar dscape avatar eric avatar errordeveloper avatar flyerhzm avatar hackerappliances avatar ivanvanderbyl avatar jessmartin avatar johnhaley81 avatar jonmarkgo avatar jonnyfunfun avatar kronn avatar legneato avatar mahsam avatar mange avatar meh avatar perropicante avatar pjhyett avatar pmuilu avatar rtomayko avatar runesoerensen avatar stammy avatar technoweenie avatar tekkub avatar tmm1 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.