文档

22. 使用 Webhook

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.

22.1. GitHub Webhook 设置

Tower 能够根据传入的触发 Webhook 事件运行作业。 作业状态信息(挂起、错误、成功)只能在拉取请求事件中发送回。 如果您确定不希望 Tower 将作业状态回发到 Webhook 服务,请跳过步骤 1-2,直接到步骤 3

  1. 可以选择为与 Tower 一起使用生成个人访问令牌 (PAT)。

    1. 在您的 GitHub 帐户的个人资料设置中,点击**设置**。

    2. 在“个人设置”下方,点击**开发者设置**。

      _images/webhooks-create-webhook-github-settings.png
    3. 在“开发者设置”中,点击**个人访问令牌**。

    4. 在“个人访问令牌”屏幕上,点击**生成新令牌**。

    5. 出现提示时,输入您的 GitHub 帐户密码以继续。

    6. 在**说明**字段中,输入有关此 PAT 将用于什么目的的简要说明。

    7. 在“范围”字段中,Tower 自动化 Webhook 仅需要存储库范围的访问权限,除了邀请之外。 有关其他范围的信息,请点击表格上方的链接以访问文档。

    _images/webhooks-create-webhook-github-scope.png
    1. 点击**生成令牌**按钮。

    2. 令牌生成后,请确保您复制了 PAT,因为它将在 Tower 的后续步骤中使用。 您将无法在 GitHub 中再次访问此令牌。

  2. 使用 PAT 可选择在 Tower 中创建 GitHub 凭据

    1. 转到您的 Tower 实例,并使用上述生成的令牌为 GitHub PAT 创建新的凭据

    2. 记下此凭据的名称,因为它将在回发到 GitHub 的作业模板中使用。

    _images/webhooks-create-credential-github-PAT-token.png
    1. 转到您要启用 Webhook 的作业模板,并选择您在之前步骤中创建的 Webhook 服务和凭据。

    _images/webhooks-job-template-gh-webhook-credential.png

    1. 点击**保存**。 现在您的作业模板已设置为能够回发到 GitHub。 一个示例可能如下所示

    _images/webhooks-tower-to-github-status.png
  1. 转到您要配置 Webhook 的特定 GitHub 存储库,并点击**设置**。

_images/webhooks-github-repo-settings.png
  1. 在“选项”下,点击**Webhook**。

_images/webhooks-github-repo-settings-options.png
  1. 在“Webhook”页面上,点击**添加 Webhook**。

  2. 要完成“添加 Webhook”页面,您需要在 Tower 中的作业模板中启用 Webhook(或在工作流作业模板中),它将为您提供以下信息

    1. 从 Tower 作业模板中复制**Webhook URL**的内容,并将其粘贴到**有效载荷 URL**字段中。 GitHub 使用此地址将结果发送到。

    2. 将**内容类型**设置为**application/json**。

    3. 复制上述 Tower 作业模板中的**Webhook 密钥**内容,并将其粘贴到**密钥**字段中。

    4. 保持选中**启用 SSL 验证**。

    _images/webhooks-github-repo-add-webhook.png

    1. 接下来,您必须选择要触发 Webhook 的事件类型。 任何此类事件都会触发作业或工作流。 为了将作业状态(挂起、错误、成功)发送回 GitHub,您必须在单个事件部分中选择**拉取请求**。

    _images/webhooks-github-repo-choose-events.png
    1. 保持选中**活动**,然后点击**添加 Webhook**。

    _images/webhooks-github-repo-add-webhook-actve.png
  3. 配置 Webhook 后,它将显示在为您的存储库启用的 Webhook 列表中,以及编辑或删除它的功能。 点击 Webhook,它将带您进入“管理 Webhook”屏幕。 滚动到屏幕的最底部,查看对您的 Webhook 进行的所有传递尝试,以及它们是成功还是失败。

_images/webhooks-github-repo-webhooks-deliveries.png

有关更多信息,请参考GitHub Webhook 开发者文档

22.2. GitLab Webhook 设置

塔式服务器能够根据传入的触发 webhook 事件运行作业。作业状态信息(待处理、错误、成功)仅能针对合并请求事件发送回。如果您确定不想让塔式服务器将作业状态发布回 webhook 服务,请跳过步骤 1-2,直接转到 步骤 3

  1. 可选地,为与塔式服务器一起使用生成个人访问令牌 (PAT)。此令牌使塔式服务器能够在根据传入的 webhook 运行作业时将状态发布回。

    1. 在您的 GitLab 帐户的配置文件设置中,单击**设置**。

    2. 在侧边栏的“用户设置”下,单击**访问令牌**。

      _images/webhooks-create-webhook-gitlab-settings.png
    3. 在**名称**字段中,输入有关此 PAT 将用于什么内容的简短描述。

    4. 除非您要设置 webhook 的过期日期,否则跳过**过期时间**字段。

    5. 在“范围”字段中,选择适用于您的集成的字段。对于塔式服务器,仅需要选择 API。

    _images/webhooks-create-webhook-gitlab-scope.png
    1. 单击**创建个人访问令牌**按钮。

    2. 令牌生成后,请务必复制 PAT,因为塔式服务器将在后面的步骤中使用它。您将无法再次在 GitLab 中访问此令牌。

  2. 使用 PAT 可选地在塔式服务器中创建 GitLab 凭据

    1. 转到您的塔式服务器实例,并 使用上面生成的令牌为 GitLab PAT 创建新的凭据

    2. 记下此凭据的名称,因为它将在回发到 GitHub 的作业模板中使用。

    _images/webhooks-create-credential-gitlab-PAT-token.png
    1. 转到您要启用 Webhook 的作业模板,并选择您在之前步骤中创建的 Webhook 服务和凭据。

    _images/webhooks-job-template-gl-webhook-credential.png

    1. 单击**保存**。现在,您的作业模板已设置为能够发布回 GitLab。以下是一个示例:

    _images/webhooks-tower-to-gitlab-status.png
  1. 转到您要配置 webhook 的特定 GitLab 仓库,然后单击**设置 > 集成**。

_images/webhooks-gitlab-repo-settings.png
  1. 要完成“集成”页面,您需要 在塔式服务器的作业模板中启用 webhook(或在 工作流作业模板中),这将为您提供以下信息

    1. 复制上面塔式服务器作业模板中的**Webhook URL** 的内容,并将其粘贴到**URL** 字段中。GitLab 使用此地址将结果发送到。

    2. 复制上面塔式服务器作业模板中的**Webhook 密钥** 的内容,并将其粘贴到**秘密令牌**字段中。

    3. 接下来,您必须选择要触发 webhook 的事件类型。任何此类事件都将触发作业或工作流。为了将作业状态(待处理、错误、成功)发送回 GitLab,您必须在“触发器”部分中选择**合并请求事件**。

    4. 保持选中**启用 SSL 验证**。

    5. 单击**添加 webhook**。

_images/webhooks-gitlab-repo-add-webhook.png
  1. 配置 webhook 后,它将在仓库的“项目 Webhook”列表中显示,以及测试事件、编辑或删除 webhook 的功能。测试 webhook 事件将在页面的顶部显示结果,无论其成功与否。

有关详细信息,请参阅 GitLab webhook 集成文档

22.3. 有效负载输出

整个有效负载作为塔式服务器的额外变量公开。要查看有效负载信息,请转到启用 webhook 的作业模板的作业详细信息视图。在“详细信息”窗格的**额外变量**字段中,查看来自 tower_webhook_payload 变量的有效负载输出,如下面的示例所示。

_images/webhooks-jobs-extra-vars-payload.png _images/webhooks-jobs-extra-vars-payload-expanded.png