tl;dr
GitHub APIを使う感じに落ち着きました。互換API素晴らしい...。
curl --fail \
-H "Authorization: token ACCESSTOKEN" \
-H "Accept: application/vnd.github.v3.raw" \
http://HOST:PORT/api/v3/repos/:owner/:repo/contents/:path
※Accept
の内容でレスポンスが変わるので、ちゃんと上記の内容で指定する
参考
- https://github.com/gitbucket/gitbucket/wiki/API-WebHook
- https://developer.github.com/v3/repos/contents/#get-contents
- https://developer.github.com/v3/repos/contents/#custom-media-types
背景
やりたいこと
クラウド上のあるサーバから社内で運用しているGitBucketへアクセスし、あるスクリプトファイルだけを得たい。
(※クラウド→社内にはSSHトンネルで繋いで一時的にアクセスできる状態にする。)
cloneでも得ることは出来るのですが「スクリプトだけ得られれば良いしcloneするほどでもないなー」と思い、ファイルをダウンロードで済ませられないかと考えました。
やったこと
パブリックなリポジトリであれば、こんな感じにrawアクセスすればよいです。
http://HOST:PORT/:owner/:repo/raw/:branch/:path
(version 4.26.0の画面に出てくるrawボタンのURLはなぜかcommitを指してますが、ブランチ名を指定すればそれで得られます。)
また、プライベートリポジトリのcloneであれば GitHubのHelpにあるUsing a token on the command lineと同じ内容で出来ます。
しかし、version 4.26.0では、rawアクセスはプライベートリポジトリでは使えないようです。Basicもtoken認証もダメな模様。
GitHub APIを実装してるし何とかならないかな、と調べたら冒頭にある通りでしたので、それで対処しました。