Bitbucket Cloud の使用を開始する
Bitbucket Cloud を初めてお使いですか? 新規ユーザー用のガイドをご利用ください。
Webhook を作成し、トリガーできるかどうかを確認してみましょう。操作のテスト用に、シンプルな Flask サーバーで Bitbucket の Webhook を受信するリポジトリを作成しました。
開始する前に、次の要件を満たしていることを確認します。
ngrok - ngrok を使用するには、カスタム サブドメインの月間サブスクリプションが必要です。
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 ファイルを開きます。
Read through this file. Notice that it explains what prints to the command line after you run honcho start and what prints to the webhook URL.
This file also includes code that uses data from the POST payload to output a notification.
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 ファイルに行った変更が反映されます。
この内容はお役に立ちましたか?