IBM Cloud Docs
将 GitHub 事件发送到应用程序

将 GitHub 事件发送到应用程序

您可以设置 Webhook 以发送 GitHub 事件,例如新问题或对 IBM Cloud® Code Engine 应用程序的落实。 应用程序必须使用公共端点来接收 Webhook POST 请求。

有关 GitHub Webhook 的更多信息,请参阅 关于 webhook。 有关“GitHub,的更多信息,请参阅”GitHub文档

先决条件

开始之前,请设置帐户并安装命令行环境。 虽然您可以使用控制台来创建应用程序,但此示例使用 CLI。

所有 Code Engine 用户都需要具有现收现付帐户。 教程可能会产生成本。 使用“成本估算器”根据您的预计使用量生成成本估算。 有关更多信息,请参阅 Code Engine 定价

创建应用程序

创建一个应用程序以接收名为 my-github-app 的 GitHub 事件,该事件将名为 github 的映像与 ibmcloud ce app create 命令配合使用。 此应用程序记录在 GitHub 存储库中发生的每个落实事件。 该映像是根据 github.go 构建的,可从 样本 IBM Cloud Code Engine GitHub 存储库获取。

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

创建 Webhook

创建 GitHub Webhook 以向应用程序预订 GitHub 事件。 您可以预订一个或多个 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. 确保选择“激活”。 您可以通过除去复选标记来禁用 Webhook 而不将其删除。
  9. 单击 添加 Webhook

完成后,通过检查应用程序的日志文件来验证您的应用程序是否已预订。 有关日志的更多信息,请参阅 使用 CLI 查看日志

ibmcloud ce app logs --name my-github-app

在示例输出中,查找应用程序正在侦听的端口以及事件类型。

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 事件

通过触发应用程序期望的事件来测试 Webhook。 在这种情况下,应用程序期望在 GitHub 存储库中落实更改。

  1. 在 GitHub 存储库中,执行触发 Webhook 的操作。 对于 github 应用程序,将更改落实到存储库中的文件。

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

    您的输出取决于您使用的应用程序以及包含 Webhook 的 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. 选择归档和映像并删除。