将 GitHub 事件发送到应用程序
您可以设置 Webhook 以发送 GitHub 事件,例如新问题或对 IBM Cloud® Code Engine 应用程序的落实。 应用程序必须使用公共端点来接收 Webhook POST 请求。
有关 GitHub Webhook 的更多信息,请参阅 关于 webhook。 有关“GitHub,的更多信息,请参阅”GitHub文档。
先决条件
开始之前,请设置帐户并安装命令行环境。 虽然您可以使用控制台来创建应用程序,但此示例使用 CLI。
- 确保您具有现收现付帐户。
- 设置 Code Engine 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,请按以下步骤操作。
- 转至 GitHub 存储库,然后选择 设置。
- 选择 Webhook-> 添加 Webhook。 请注意,GitHub 存储库可能使用 挂钩 而不是 Webhook。
- 输入应用程序 URL 作为 有效内容 URL。
- 选择应用程序所需的 内容类型。 如果要使用样本
github
应用程序,请选择application/json
作为内容类型。 - 可选。 向您的 Webhook 添加私钥。 有关更多信息,请参阅 保护 Webhook。
- 选择 启用 SSL 验证。
- 选择 仅推送事件 以触发 Webhook。
- 确保选择“激活”。 您可以通过除去复选标记来禁用 Webhook 而不将其删除。
- 单击 添加 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 存储库中落实更改。
-
在 GitHub 存储库中,执行触发 Webhook 的操作。 对于
github
应用程序,将更改落实到存储库中的文件。 -
一两分钟后,找到应用程序的日志。 如果应用程序缩放为零,那么您可能会看到一条消息,指示应用程序没有任何正在运行的实例。 应用程序在接收到事件时向上扩展,因此请在几分钟内重试。 有关日志的更多信息,请参阅 使用 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
。
清除
完成本教程后,可以清除使用以下命令创建的资源。
-
删除应用程序
ibmcloud ce app delete --name my-github-app
删除应用程序时,还会删除关联的构建文件。
-
通过打开 GitHub 设置-> Webhook 并单击 Webhook 名称后的 删除 来删除 Webhook。
-
删除构建从 IBM Cloud Container Registry创建的映像。
- 在 IBM Cloud 控制台中浏览至 注册表。
- 通过搜索应用程序名称来查找与应用程序关联的归档和映像。
- 选择归档和映像并删除。