IBM Cloud Docs
アプリケーションへの GitHub イベントの送信

アプリケーションへの GitHub イベントの送信

新しい問題や IBM Cloud® Code Engine アプリケーションへのコミットなどの GitHub イベントを送信するために、Webhook をセットアップできます。 アプリケーションは、Webhook POST 要求を受信するためにパブリック・エンドポイントを使用する必要があります。

GitHub Webhook について詳しくは、 Webhook についてを参照してください。 GitHub,の詳細については、GitHubDocsを参照してください。

前提条件

始める前に、アカウントをセットアップし、コマンド・ライン環境をインストールします。 コンソールを使用してアプリケーションを作成できますが、この例では 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を作成するには、以下の手順に従います。

  1. GitHub リポジトリーに移動し、 「設定」 を選択します。
  2. 「Webhook」-> 「Webhook の追加」 を選択します。 GitHub リポジトリーでは、 Webhook の代わりに フック を使用する場合があることに注意してください。
  3. 「ペイロード URL」 としてアプリケーション URL を入力します。
  4. アプリケーションが必要とする 「コンテンツ・タイプ」 を選択します。 サンプル github アプリを使用している場合は、コンテンツ・タイプとして application/json を選択します。
  5. オプション。 Webhook にシークレットを追加します。 詳しくは、 Webhook の保護を参照してください。
  6. 「SSL 検証を有効にする」 を選択します。
  7. 「プッシュ・イベントのみ」 を選択して、Webhook をトリガーします。
  8. Active が選択されていることを確認する。 チェック・マークを外すことにより、Webhook を削除せずに無効にすることができます。
  9. 「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 リポジトリーで変更がコミットされることを予期しています。

  1. GitHub リポジトリーで、Webhook をトリガーするアクションを実行します。 github アプリケーションの場合は、リポジトリー内のファイルに変更をコミットします。

  2. 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

クリーンアップ

このチュートリアルを完了すると、以下のコマンドを使用して作成したリソースをクリーンアップできます。

  1. アプリケーションの削除

    ibmcloud ce app delete --name my-github-app
    

    アプリを削除すると、関連付けられたビルド・ファイルも削除されます。

  2. GitHub 設定->「Webhook」 を開き、Webhook 名の後の 「削除」 をクリックして、Webhook を削除します。

  3. IBM Cloud Container Registryからビルドが作成したイメージを削除する。

    1. IBM Cloud コンソールで レジストリー にナビゲートします。
    2. アプリケーション名を検索して、アプリケーションに関連付けられているアーカイブとイメージを見つけます。
    3. アーカイブとイメージを選択して削除します。