アプリケーションへの GitHub イベントの送信
新しい問題や IBM Cloud® Code Engine アプリケーションへのコミットなどの GitHub イベントを送信するために、Webhook をセットアップできます。 アプリケーションは、Webhook POST 要求を受信するためにパブリック・エンドポイントを使用する必要があります。
GitHub Webhook について詳しくは、 Webhook についてを参照してください。 GitHub,の詳細については、GitHubDocsを参照してください。
前提条件
始める前に、アカウントをセットアップし、コマンド・ライン環境をインストールします。 コンソールを使用してアプリケーションを作成できますが、この例では CLI を使用します。
- 従量課金 (PAYG) アカウントがあることを確認します。
- Code Engine の CLI 環境をセットアップします。
- プロジェクトを作成して使用できるようにします。
すべてのCode Engineユーザーは、従量課金 (PAYG) アカウントを持っている必要があります。 チュートリアルでは、費用が発生する場合があります。 コスト見積もりツールを使用して、使用量の見積もりに基づいてコスト見積もりを生成してください。 詳しくは、 Code Engine 価格設定 を参照してください。
アプリケーションの作成
ibmcloud ce app create
コマンドで github
というイメージを使用する、 my-github-app
という GitHub イベントを受信するアプリケーションを作成します。 このアプリは、 GitHub
リポジトリーで発生した各コミット・イベントをログに記録します。 イメージは github.go
から作成され、 Samples for IBM Cloud Code Engine GitHub repoから入手できます。
ibmcloud ce application create --name my-github-app --image icr.io/codeengine/github --min-scale 1
アプリケーションが作成されたら、アプリケーションが Ready
状態であることを確認し、アプリケーション URL を見つけます。
ibmcloud ce application get --name my-github-app
アプリケーション URL は、出力例の 「URL」 フィールドにあります。
Name: my-github-app
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 20h
Created: 2022-11-28T13:16:49-06:00
URL: https://my-github-app.abcdabcdabc.us-south.codeengine.appdomain.cloud
Cluster Local URL: http://my-github-app.abcdabcdabc.svc.cluster.local
Console URL: https://cloud.ibm.com/codeengine/project/us-south/abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f/application/my-github-app/configuration
Status Summary: Application deployed successfully
...
Web フックの作成
GitHub Webhook を作成して、アプリケーションを GitHub イベントにサブスクライブします。 1 つ以上の Webhook イベントをサブスクライブできます。 サブスクライブしたイベントが発生すると、 GitHub はペイロードをアプリケーションに送信します。 詳しくは、 Webhook のイベントとペイロードを参照してください。
GitHubwebhookを作成するには、以下の手順に従います。
- GitHub リポジトリーに移動し、 「設定」 を選択します。
- 「Webhook」-> 「Webhook の追加」 を選択します。 GitHub リポジトリーでは、 Webhook の代わりに フック を使用する場合があることに注意してください。
- 「ペイロード URL」 としてアプリケーション URL を入力します。
- アプリケーションが必要とする 「コンテンツ・タイプ」 を選択します。 サンプル
github
アプリを使用している場合は、コンテンツ・タイプとしてapplication/json
を選択します。 - オプション。 Webhook にシークレットを追加します。 詳しくは、 Webhook の保護を参照してください。
- 「SSL 検証を有効にする」 を選択します。
- 「プッシュ・イベントのみ」 を選択して、Webhook をトリガーします。
- Active が選択されていることを確認する。 チェック・マークを外すことにより、Webhook を削除せずに無効にすることができます。
- 「Webhook の追加」 をクリックします。
完了したら、アプリケーションのログ・ファイルを調べて、アプリケーションがサブスクライブされていることを確認します。 ログについて詳しくは、 CLI を使用したログの表示 を参照してください。
ibmcloud ce app logs --name my-github-app
出力例では、イベントのタイプだけでなく、アプリが listen しているポートも探してください。
my-github-app-00001-deployment-abcdabcdabc-1234/user-container:
2022/12/02 17:07:27 Listening on port 8080
2022/12/02 17:10:08 Event Type: ping
2022/12/02 17:10:08 Not a 'push' event so exit
アプリケーションがゼロにスケーリングされると、実行中のアプリケーションのインスタンスがないことを示すメッセージが表示される場合があることに注意してください。 このアプリの最小スケールは 1 であるため、常に実行中のインスタンスがあります。
GitHub イベントのテスト
アプリケーションが予期するイベントをトリガーして、Web フックをテストします。 この場合、アプリケーションは、 GitHub リポジトリーで変更がコミットされることを予期しています。
-
GitHub リポジトリーで、Webhook をトリガーするアクションを実行します。
github
アプリケーションの場合は、リポジトリー内のファイルに変更をコミットします。 -
1、2 分後に、アプリケーションのログを見つけます。 アプリケーションがゼロにスケーリングされると、アプリケーションに実行中のインスタンスがないことを示すメッセージが表示される場合があります。 アプリケーションはイベントを受信するとスケールアップするため、数分後に再試行してください。 ログについて詳しくは、 CLI を使用したログの表示 を参照してください。
ibmcloud ce app logs --name my-github-app
例えば、次の出力を見てほしい。
2022/11/28 19:45:28 Event: { "ref": "refs/heads/main", "before": "0a11d22ebdaacdbb7bf5fdb6c92565c7c00fa97b", "after": "af363efb8568874fe219bc73f3bccd0f4991907f", "repository": { ... "committer": { "name": "GitHub", "email": "noreply@github.com", "username": "web-flow" }, "added": [], "removed": [], "modified": [ "README.md" ] } } 2022/11/28 19:45:28 kersten1 committed "af363efb8568874fe219bc73f3bccd0f4991907f" to "refs/heads/main" branch 2022/11/28 19:45:28 ibmcloud ce buildrun submit ...
出力は、使用するアプリケーションと、Web フックを含む GitHub リポジトリーによって異なります。
Webhook が動作しています。 これで、 GitHub リポジトリーにファイルをコミットするたびにアプリが通知を受け取るようになりました。
このアプリケーションは、アプリのインスタンスが常に実行されるように、最小スケールを 1 に設定します。 以下のコマンドを使用してアプリを更新することにより、スケールを 0 に設定できます。 ibmcloud ce app update --name my-github-app --min-scale 0
クリーンアップ
このチュートリアルを完了すると、以下のコマンドを使用して作成したリソースをクリーンアップできます。
-
アプリケーションの削除
ibmcloud ce app delete --name my-github-app
アプリを削除すると、関連付けられたビルド・ファイルも削除されます。
-
GitHub 設定->「Webhook」 を開き、Webhook 名の後の 「削除」 をクリックして、Webhook を削除します。
-
IBM Cloud Container Registryからビルドが作成したイメージを削除する。
- IBM Cloud コンソールで レジストリー にナビゲートします。
- アプリケーション名を検索して、アプリケーションに関連付けられているアーカイブとイメージを見つけます。
- アーカイブとイメージを選択して削除します。