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