7.7. 设置自定义 Git 触发器

自定义 Git 触发器 是任何 Git 服务器充当构建触发器的通用方法。它只依赖于 SSH 密钥和 Webhook 端点。其他所有都保留供用户实施。

7.7.1. 创建触发器

创建自定义 Git 触发器与创建任何其他触发器类似,但以下除外:

  • Red Hat Quay 无法自动检测要与触发器搭配使用的正确 Robot 帐户。这必须在创建过程中手动完成。
  • 创建触发器后还有额外的步骤。这些步骤在以下部分详细介绍。

7.7.2. 自定义触发器创建设置

在创建自定义 Git 触发器时,需要额外的步骤:

  1. 您必须提供创建触发器时生成的 SSH 公钥的读访问权限。
  2. 您必须设置一个将 POST 到 Red Hat Quay 端点的 webhook 来触发构建。

可以通过从 Settingsgear 图标选择 View Credentials 来使用密钥和 URL。

查看和修改存储库中的标签

View and modify tags from your repository

7.7.2.1. SSH 公钥访问

根据 Git 服务器配置,可以通过多种方式安装 Red Hat Quay 为自定义 Git 触发器生成的 SSH 公钥。

例如,Git 文档描述了一个小型服务器设置,在其中将密钥添加到 $HOME/.ssh/authorize_keys 将提供对 Builders 的访问权限,以克隆存储库。对于任何未正式支持的 git 存储库管理软件,通常有一个输入密钥的位置,通常被标记为 Deploy Keys

7.7.2.2. Webhook

要自动触发构建,一个必须使用以下格式将 .json 有效负载 POST 到 Webhook URL:

这可以通过各种不同的方法来实现,具体取决于服务器设置,但大多数情况下,可以使用 post-receive Git Hook 来完成。

注意

此请求需要一个包含 application/jsonContent-Type 标头才能有效。

Webhook 示例

{
  "commit": "1c002dd",                                   // required
  "ref": "refs/heads/master",                            // required
  "default_branch": "master",                            // required
  "commit_info": {                                       // optional
    "url": "gitsoftware.com/repository/commits/1234567", // required
    "message": "initial commit",                         // required
    "date": "timestamp",                                 // required
    "author": {                                          // optional
      "username": "user",                                // required
      "avatar_url": "gravatar.com/user.png",             // required
      "url": "gitsoftware.com/users/user"                // required
    },
    "committer": {                                       // optional
      "username": "user",                                // required
      "avatar_url": "gravatar.com/user.png",             // required
      "url": "gitsoftware.com/users/user"                // required
    }
  }
}