Octogate
Github hook proxy server
Install / Use
/learn @joker1007/OctogateREADME
Octogate
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.
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
- Fork it ( https://github.com/joker1007/octogate/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Related Skills
node-connect
349.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。




