Bitbucket Cloud の使用を開始する
Bitbucket Cloud を初めてお使いですか? 新規ユーザー用のガイドをご利用ください。
Webhook を作成し、トリガーできるかどうかを確認してみましょう。操作のテスト用に、シンプルな Flask サーバーで Bitbucket の Webhook を受信するリポジトリを作成しました。
開始する前に、次の要件を満たしていることを確認します。
Webhook を追加する前に、サーバーの準備を開始します。
ローカル システムでサーバーをセットアップするために、まず、次のリポジトリhttps://bitbucket.org/atlassianlabs/webhook-listener のクローンを作成します。Webhook Listener リポジトリでクローン URL をコピーします。リポジトリの保存先にするディレクトリで、ターミナルにクローン コマンドと URL を入力します。
1
$ git clone git@bitbucket.org:atlassianlabs/webhook-listener.git
ディレクトリを webhook-listener ディレクトリに変更します。
1
$ cd ~/<repos_directory>/webhook-listener
先ほどクローンした REQUIREMENTS.txt ファイルをインストールします。
1
$ pip install -r REQUIREMENTS.txt
ローカル システムの webhook-listener リポジトリで .env ファイルを開きます。ファイルには、1 つの行 (NGROK_SUBDOMAIN=bbwebhook) が含まれます。この行の NGROK_SUBDOMAIN を、サーバーの任意のサブドメインに設定します。このチュートリアルでは作業者の名前に変更します。
1
NGROK_SUBDOMAIN=<first_name>
次のコマンドで ngrok トンネルおよび Flask サーバーを開始します。
1
$ honcho start
このコマンドを実行する前に、または、honcho start が動作しない場合、ngrok ディレクトリが PATH のディレクトリにあることを確認します。
honcho start コマンドを実行すると、コマンド ラインに以下が返されます。
1
2
You can access this webhook publicly via at http://<first_name>.ngrok.io/webhook
You can access ngrok's web interface via http://localhost:4040
これらの両方の URL を記録します。最初の URL は、サーバーへのアクセスに使用する Webhook URL です。最初の URL を送信するリクエストを表示するには、2 番目の URL を使用します。
次に、独自のリポジトリの Webhook を作成します。Bitbucket のリポジトリで、左側のサイドバーの [リポジトリ設定] > [Webhook] の順に選択します。
[Webhook の追加] ボタンをクリックしてリポジトリに Webhook を作成します。
[タイトル] に「Webhook Listber」と入力します。
[URL] フィールドに、サーバーの URL (例: http://<first_name>.ngrok.io/webhook) を入力します。
[保存] をクリックします。このチュートリアルでは、[トリガー] を [リポジトリ プッシュ] のままにします。
これで Webhook を作成したので、Webhook の URL を開きます。
ngrok の Web インターフェイスの URL を開きます (http://localhost:4040/)。ブラウザーがサーバーに対して行った GET リクエストが表示されます。
次に、リポジトリにオブジェクトをプッシュして、Webhook がトリガーされるかどうかを確認します。最初に、次のテキストで新しいファイルを作成します。
1
Let's try out a webhook.
ファイルを file.txt としてローカル システムのリポジトリ ディレクトリに保存します。
Bitbucket リポジトリにファイルを追加し、コミット、プッシュします。
1
2
3
$ git add file.txt
$ git commit -m 'Initial commit'
$ git push
ngrok URL に戻ると、Bitbucket がサーバーに送信したイベント ペイロードの POST リクエストが表示されます。
これで、Webhook を正常に作成およびトリガーしました。
ローカル システムのクローンされたリポジトリで、listener.py ファイルを開きます。
このファイルをお読みください。このファイルは、honcho start を実行した後にコマンド ラインに表示される内容と、Webhook URL に表示される内容を説明しています。
また、このファイルには、POST ペイロードのデータを使用して通知を出力するコードも含まれます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@app.route('/webhook', methods=['GET', 'POST'])
def tracking():
if request.method == 'POST':
data = request.get_json()
commit_author = data['actor']['username']
commit_hash = data['push']['changes'][0]['new']['target']['hash'][:7]
commit_url = data['push']['changes'][0]['new']['target']['links']['html']['href']
if _platform == "darwin":
from pync import Notifier
Notifier.notify('%s committed %s\nClick to view in Bitbucket' % (commit_author, commit_hash), title='Webhook received!', open=commit_url)
else:
print 'Webhook received! %s committed %s' % (commit_author, commit_hash)
return 'OK'
else:
return displayHTML(request)
tracking() 関数を変更し、Webhook Listener の POST データの使用方法を更新します。使用するペイロード パラメーターや、関数によるデータの処理方法を更新できます。
listener.py ファイルを保存します。
honcho start を再度実行し、webhook を使用して別のファイルをリポジトリにプッシュします。
listener.py ファイルに行った変更が反映されます。
この内容はお役に立ちましたか?