書いたのはだいぶ昔なんだけど、ふと思い出すきっかけがあったので紹介します。
何者か
デプロイして、curlなりなんなりでURLを叩くと権限のある任意のIssueにコメントしてくれます。
Sinatraベースです。
cat <<EOF | curl -F body=@- http://localhost:9292/udzura/sample/6/comments This is a sample comment Enjoy! :sushi: [![LGTM](http://lgtm.in/p/QKEiqJUVp)](http://lgtm.in/i/QKEiqJUVp) EOF
こういうのを送ると
コメントがつきます。よかったです。
インストールとデプロイ
Gemfileなりに gem "octochan" ってかいたのち、
こういう感じの config.ru を書いてラックアップすればいいと思います。
require 'octochan' Octochan::App.set :access_token, 'GitHubのトークン' run Octochan::App
トークンはデフォルトの、「repo」とか「public_repo」とかその辺の権限があれば良いかと思います。
IP制限なり認証は前段にプロクシを置く、Rack Middlewareを使う、等考えられます。octochanとしては何もしないのでご注意を。
たとえば、サブディレクトリによってGitHubへの投稿とGitHub Enterpriseへの投稿を振り分けることも出来たりします。以下は例です。
require 'octochan' module PB class GitHub < Octochan::App set :access_token, 'XXXXXXXXXXXXXXXXXX' end class GHE < Octochan::App set :access_token, 'YYYYYYYYYYYYYYYYYY' set :api_root, 'https://githubenterprise.local/api/v3' end end map '/github' do run PB::GitHub end map '/ghe' do run PB::GHE end run lambda {|e| [404, {'Content-Type' => 'text/plain'}, ["Please Access /github or /ghe"]] }
Rack最高!!1
バックデータもないため、Herokuその他パースへのデプロイも簡単です。実際某ペパボ社?パペボ社?では社内に立てた Dokku にデプロイして手軽に使っているようです。
APIの仕様
基本的に使うエンドポイントは一つです。
POST http://localhost:9292/#{org name}/#{repo name}/#{issue or PR ID}/comments
- body=コメントのメッセージ というリクエストボディを送るか、
- もしくはbody=という名前でテキストファイルを送るとコメントの内容として解釈します
詳細は octochan/octochan.rb at master · udzura/octochan · GitHub というサイトにドキュメントを書きました。