26. 使用 Webhook
一个 Webhook 提供了在应用程序之间通过网络执行指定命令的功能。AWX 目前提供与 GitHub 和 GitLab 的 Webhook 集成。本节介绍了通过各自服务设置 Webhook 的过程。
GitHub 和 GitLab 的 Webhook 后状态回传功能仅在某些 CI 事件下设计为工作。接收其他类型的事件将在服务日志中导致如下所示的消息
awx.main.models.mixins Webhook event did not have a status API endpoint associated, skipping.
26.1. GitHub Webhook 设置
AWX 能够根据传入的触发 Webhook 事件运行作业。作业状态信息(待处理、错误、成功)仅可针对拉取请求事件发送回。如果您确定不希望 AWX 将作业状态回传到 Webhook 服务,请跳过步骤 1-2,直接转到 步骤 3。
可选地生成一个用于与 AWX 配合使用的个人访问令牌 (PAT)。
在您的 GitHub 帐户的个人资料设置中,点击**设置**。
在设置的最底部,点击**<> 开发者设置**。
在开发者设置中,点击**个人访问令牌**。
在个人访问令牌屏幕上,点击**生成新令牌**。
出现提示时,输入您的 GitHub 帐户密码以继续。
在**备注**字段中,输入关于此 PAT 将用于什么的简要说明。
在范围字段中,自动化 Webhook 仅需要存储库范围的访问权限,邀请除外。有关其他范围的信息,请点击表格上方的链接以访问文档。
点击**生成令牌**按钮。
生成令牌后,请确保复制 PAT,因为它将在后面的步骤中使用。您将无法在 GitHub 中再次访问此令牌。
使用 PAT 可选地创建 GitHub 凭据
转到您的实例,并使用上面生成的令牌 为 GitHub PAT 创建新的凭据。
记下此凭据的名称,因为它将在回传到 GitHub 的作业模板中使用。
转到您要启用 Webhook 的作业模板,并选择您在上一步中创建的 Webhook 服务和凭据。
点击**保存**。现在您的作业模板已设置为能够回传到 GitHub。一个示例可能如下所示
转到您要配置 Webhook 的特定 GitHub 存储库,然后点击**设置**。
在选项下,点击**Webhook**。
在 Webhook 页面上,点击**添加 Webhook**。
要完成添加 Webhook 页面,您需要 在作业模板中启用 Webhook(或在 工作流作业模板中),这将为您提供以下信息
复制作业模板中**Webhook URL**的内容,并将其粘贴到**有效负载 URL**字段中。GitHub 使用此地址发送结果。
将**内容类型**设置为**application/json**。
复制上面作业模板中**Webhook 密钥**的内容,并将其粘贴到**密钥**字段中。
保持**启用 SSL 验证**处于选中状态。
接下来,您必须选择要触发 Webhook 的事件类型。任何此类事件都将触发作业或工作流。为了将作业状态(待处理、错误、成功)发送回 GitHub,您必须在单个事件部分中选择**拉取请求**。
保持**激活**处于选中状态,然后点击**添加 Webhook**。
配置 Webhook 后,它将显示在您的存储库中活动 Webhook 的列表中,并可以选择编辑或删除它。点击 Webhook,它将带您进入管理 Webhook 屏幕。滚动到屏幕的最底部,以查看发送到您的 Webhook 的所有传递尝试以及它们是成功还是失败。
有关更多信息,请参阅 GitHub Webhook 开发人员文档。
26.2. GitLab Webhook 设置
AWX 能够根据传入的触发 Webhook 事件运行作业。作业状态信息(待处理、错误、成功)仅可针对合并请求事件发送回。如果您确定不希望 AWX 将作业状态回传到 Webhook 服务,请跳过步骤 1-2,直接转到 步骤 3。
可选地,生成一个个人访问令牌 (PAT)。此令牌使 AWX 能够在根据传入的 Webhook 运行作业时回传状态。
在您的 GitLab 帐户的个人资料设置中,点击**设置**。
在侧边栏中,在用户设置下,点击**访问令牌**。
在**名称**字段中,输入关于此 PAT 将用于什么的简要说明。
跳过**过期时间**字段,除非您希望为您的 Webhook 设置过期日期。
在范围字段中,选择适用于您的集成的字段。对于 AWX,API 是唯一必要的选项。
点击**创建个人访问令牌**按钮。
生成令牌后,请确保复制 PAT,因为它将在后面的步骤中使用。您将无法在 GitLab 中再次访问此令牌。
使用 PAT 可选地创建 GitLab 凭据
转到您的实例,并使用上面生成的令牌 为 GitLab PAT 创建新的凭据。
记下此凭据的名称,因为它将在回传到 GitHub 的作业模板中使用。
转到您要启用 Webhook 的作业模板,并选择您在上一步中创建的 Webhook 服务和凭据。
点击**保存**。现在您的作业模板已设置为能够回传到 GitLab。一个示例可能如下所示
转到您要配置 Webhook 的特定 GitLab 存储库,然后点击**设置 > 集成**。
要完成集成页面,您需要 在作业模板中启用 Webhook(或在 工作流作业模板中),这将为您提供以下信息
复制上面作业模板中**Webhook URL**的内容,并将其粘贴到**URL**字段中。GitLab 使用此地址发送结果。
复制上面作业模板中**Webhook 密钥**的内容,并将其粘贴到**密钥令牌**字段中。
接下来,您必须选择要触发 Webhook 的事件类型。任何此类事件都将触发作业或工作流。为了将作业状态(待处理、错误、成功)发送回 GitLab,您必须在触发器部分中选择**合并请求事件**。
保持**启用 SSL 验证**处于选中状态。
点击**添加 Webhook**。
配置 Webhook 后,它将显示在您的存储库的项目 Webhook 列表中,并可以选择测试事件、编辑或删除 Webhook。测试 Webhook 事件将在页面顶部显示结果,表明它是成功还是失败。
有关更多信息,请参阅 GitLab Webhook 集成文档。
26.3. 有效负载输出
整个有效负载作为额外变量公开。要查看有效负载信息,请转到启用了 Webhook 的作业模板的作业详细信息视图。在详细信息窗格的**额外变量**字段中,查看来自 awx_webhook_payload
变量的有效负载输出,如下面的示例所示。