げっとシステムログ

WEB開発メモ

bitbucket で自分のリポジトリに pull request を投げたい

github.com

git post

で pull request が投げられ(以下略 : 前の post を参照)

以下のページを参考に作業

OAuth on Bitbucket Cloud - Atlassian Documentation

github と違って、ちゃんと oauth しないといけなかった

bitbucket の設定の OAuth から OAuth コンシューマーを追加
リダイレクト URL は https://github.com/perfect-freeze/git-post にした
許可するのは pull request の作成

ここはクエリを受け取れるようなページじゃないけどブラウザで code がコピーできれば良いかな、という感じ

https://bitbucket.org/site/oauth2/authorize?client_id={client_id}&response_type=code

ここにブラウザでアクセス
client_id は、コンシューマーの「鍵」

表示されたページで「許可」すると、リダイレクト URL に ?code={code} でリダイレクトするのでその code をコピーしておく

curl -X POST -u "client_id:secret" \
     https://bitbucket.org/site/oauth2/access_token \
     -d grant_type=authorization_code -d code={code}

そのあとこのリクエストを投げると access_token が手に入る

そして

curl -H "Authorization: Bearer $token" ¥
     -H "Content-Type: application/json" ¥
     -X POST ¥
     https://api.bitbucket.org/2.0/repositories/USER/REPO/pullrequests/ ¥
     -d '{"title": "TITLE", "source": {"branch": {"name": "BRANCH"}, "repository": {"full_name": "USER/REPO"}}}'

で pull request できた!

ちなみに、このアクセストークン、1時間で無効になる

curl -X POST -u "client_id:secret"
     https://bitbucket.org/site/oauth2/access_token \
     -d grant_type=refresh_token -d refresh_token={refresh_token}

これで新しいトークンが取得できる

refresh_token はトークンを取得した時に同時に取得できる