今ゲームの管理画面で、たとえばカード画像をアップロードしたらよしなにGithubにも登録できて、デプロイシステムはGithubだけ見に行けばいいみたいなのを作ってたんだけど挫折したのでメモ。時間ないからあんまり追ってません。
1.Github EnterpriseにもAPIがあった
ところでうちの会社はGithub Enterpriseなんだけど、API無いかと思ったらあった。ホストを設定するだけで行けた。Github APIとはなんぞや?という方はコチラを。
http://developer.github.com/v3/
それで喜び勇んで作り始めたわけですよ。JAVAのライブラリもご丁寧に用意してあったし、APIも単純なOAuth+jsonなんでデバッグも楽そうだしと思って。
http://developer.github.com/v3/libraries/
2.Content APIをつかってみた。そして挫折した
それで、たくさんあるAPIのなかから、単純に1ファイル単位でCommit&Pushができちゃう(Github上で.mdファイル編集できるイメージ)Content APIをつかってみました。
http://developer.github.com/v3/repos/contents/
で、実装して何度かうまくいったんだけど、500 Bad gatewayが頻発する。理由はよくわからないけど、1秒sleepして再ポストしたらうまく言ったので「不安定だなー」とおもってた。
でもどうやらContents APIはあまり大きなファイル(リクエストサイズにして1MB行くか行かないかくらい。Base64エンコードなので太る)は現状向いてないみたい。ためしにリクエストサイズ100KBくらいでやってみたらほぼ100%成功するので。
うちのGHEの問題なのかも知らないけど、ちょっとそこに突っ込んでられるほど今余裕ないので、その段階で諦めることにした。
3.結局コマンドライン叩くことにした
そのあとJGitに手を出そうとしたんだけど
これまたドキュメントが少なく、どっちみち認証が鍵認証とかになる(APIだとトークン生成で行けた)のでPure Javaにこだわるメリットがあまりなく、コマンドライン叩くことにした。
CommonsのExecつかって実装したので、個人的にはもうこれでいいやとなって満足しています。その内又別の(ワークフローから考えて最適な)やり方考えてみようと思います。
以上メモ。