SkillAgentSearch skills...

Octogate

Github hook proxy server

Install / Use

/learn @joker1007/Octogate
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Octogate

Gem Version Build Status Code Climate Coverage Status

Github hook proxy server of Sinatra Framework.

You can write about request destination in Ruby DSL

Installation

Add this line to your application's Gemfile:

gem 'octogate'

And then execute:

$ bundle

Or install it yourself as:

$ gem install octogate

Requirements

  • Ruby-2.0.0 or later

Event Capability

  • Push Event
  • PullRequest Event
  • PullRequest Review Comment Event
  • Issues Event
  • Issue Comment Event

Usage

Write config.rb.

token "token_string"

target "jenkins" do
  hook_type [:push]
  url "http://targethost.dev/job/JobName"
  http_method :post

  parameter_type :query
  params key1: "value1", key2: "value2"

  match ->(event) {
    event.ref =~ /master/
  }
end
# if event type is push and event.ref contains "master",
# octogate requests "http://targethost.dev/job/JobName" via POST method, request body is {key1: "value1, key2: "value2"} params

target "json_params" do
  hook_type [:push, :pull_request]
  url "http://targethost.dev/job/JobName"
  http_method :post

  parameter_type :json
  params key1: "value1", key2: "value2"

  match ->(event) {
    case event
    when Octogate::Event::PullRequest
      event.try(:pull_request).try(:head).try(:ref) =~ /json_params/
    when Octogate::Event::Push
      event.ref =~ /json_params/
    end
  }
end
# if event type is push or pull_request, and ref name contains "json_params",
# octogate requests "http://targethost.dev/job/JobName" via POST method, body is {key1: "value1, key2: "value2"} as JSON FORMAT

More sample is hear

And launch server.

% bundle exec octogate -h
Usage: octogate [options]
    -c config                        Set config file (default = ./config.rb)
    -p port                          Set port number (default = 4567)
    -o address                       Set address to bind (default = 0.0.0.0)

% bundle exec octogate -c config.rb
# => Endpoint is http://hostname:4567/token_string

Routing

| URL | description | | ----- | ----- | | http://hostname:port/:token | Event Hook Endpoint | | http://hostname:port/:token/received_events | View Received Events (Recently 100 Events from boot) | | http://hostname:port/:token/sent_events | View Sent Events (Recently 100 Events from boot) |

Config DSL Reference

Global definitions

| name | arg | description | | ------- | -------- | ------------ | | token | String | set token used as endpoint url. | | ssl_verify | Boolean | if set false, make disable SSL verification. (if target uses self-signed certificate) | | target | String and Block | String is target name. Block is target definition block. |

Target definitions

| name | arg | description | | ---------------- | ----------------- | ---------------------------------------------------------------------------------------------------- | | hook_type | Array (value is event type) | set hook event (default = [:push]) | | url | String | set destination URL | | http_method | Symbol | set HTTP method when octogate request target. | | parameter_type | :query or :json | :query = use form parameter or get query parameter, :json = serialize payload by json format (default = :query) | | params | Hash or Proc | set payload parameters. if pass Proc instance, call with event instance and use result | | match | Boolean or Proc | if this value is set, then transfer process is executed only when the evaluation result is truthy. | | username | String | set Basic Auth username | | password | String | set Basic Auth password |

Event type

| name | class name | | ------- | ------------------ | | :push | Octogate::Event::Push | | :pull_request | Octogate::Event::PullRequest | | :pull_request_review_comment | Octogate::Event::PullRequestReviewComment | | :issues | Octogate::Event::Issue | | :issue_comment | Octogate::Event::IssueComment |

Event instance is Mash subclass. it has same data with the payload sent by GitHub Hook.

ref. Event Types | GitHub API

Hosting on Heroku

Create directory and bundle init.

% mkdir your-app-dir
% cd your-app-dir
% bundle init

Write Gemfile and bundle install.

gem "octogate"
gem "thin"
bundle install --path .bundle

Write Procfile

web: bundle exec octogate -c ./config.rb -p $PORT

Write config at ./config.rb

% vim config.rb

Create git repository.

% git init .
% echo ".bundle" > .gitignore
% git commit -am "init"

Create Heroku app and push it.

% heroku create your-app-name
% git push heroku master

Contributing

  1. Fork it ( https://github.com/joker1007/octogate/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Related Skills

View on GitHub
GitHub Stars22
CategoryDevelopment
Updated9y ago
Forks1

Languages

Ruby

Security Score

75/100

Audited on Apr 7, 2017

No findings