Azure 容器注册表 Webhook 参考

可以为容器注册表配置 Webhook,以便对其执行某些操作时生成相应事件。 例如,启用将容器映像或 Helm 图表推送到注册表或者将其删除时要触发的 Webhook。 触发 Webhook 后,Azure 容器注册表向指定的终结点发出 HTTP 或 HTTPS 请求并包含有关此事件的信息。 然后终结点处理相应的 Webhook 和操作。

以下各部分详细介绍由受支持的事件生成的 Webhook 请求的架构。 事件部分包括事件类型的有效负载架构、示例请求有效负载以及触发 Webhook 的一个或多个示例命令。

有关为 Azure 容器注册表配置 Webhook 的信息,请参阅使用 Azure 容器注册表 Webhook

Webhook 请求

HTTP 请求

配置 Webhook 时,触发的 Webhook 向指定的 URL 终结点发出 HTTP POST 请求。

HTTP 头

如果尚未指定 Webhook 的 Content-Type 自定义标头,则 Webhook 请求包括 application/jsonContent-Type

除为 Webhook 已指定的这些自定义标头外,不会向该请求添加任何其他标头。

Push 事件

容器映像推送到存储库时触发的 Webhook。

Push 事件负载

元素 类型 说明
id 字符串 Webhook 事件的 ID。
timestamp DateTime 触发 Webhook 事件的时间。
action 字符串 触发 Webhook 事件的操作。
目标 复杂类型 触发 Webhook 事件的事件目标。
请求 复杂类型 生成 Webhook 事件的请求。

目标

元素 类型 说明
mediaType 字符串 引用对象的 MIME 类型。
size Int32 内容的字节数。 与 Length 字段相同。
digest 字符串 内容摘要,由注册表 V2 HTTP API 规范定义。
length Int32 内容的字节数。 与 Size 字段相同。
repository 字符串 存储库名称。
tag 字符串 映像标记名称。

request

元素 类型 说明
id 字符串 启动事件的请求 ID。
host 字符串 注册表实例的外部可访问主机名,由传入请求中的 HTTP 主机标头指定。
method 字符串 生成事件的请求方法。
useragent 字符串 请求的用户代理标头。

有效负载示例:映像推送事件

{
  "id": "cb8c3971-9adc-488b-xxxx-43cbb4974ff5",
  "timestamp": "2017-11-17T16:52:01.343145347Z",
  "action": "push",
  "target": {
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "size": 524,
    "digest": "sha256:xxxxd5c8786bb9e621a45ece0dbxxxx1cdc624ad20da9fe62e9d25490f33xxxx",
    "length": 524,
    "repository": "hello-world",
    "tag": "v1"
  },
  "request": {
    "id": "3cbb6949-7549-4fa1-xxxx-a6d5451dffc7",
    "host": "myregistry.azurecr.cn",
    "method": "PUT",
    "useragent": "docker/17.09.0-ce go/go1.8.3 git-commit/afdb6d4 kernel/4.10.0-27-generic os/linux arch/amd64 UpstreamClient(Docker-Client/17.09.0-ce \\(linux\\))"
  }
}

触发映像推送事件 Webhook 的示例 Docker CLI 命令:

docker push myregistry.azurecr.cn/hello-world:v1

图表推送事件

将 Helm 图表推送到存储库时触发的 Webhook。

图表推送事件有效负载

元素 类型 说明
id 字符串 Webhook 事件的 ID。
timestamp DateTime 触发 Webhook 事件的时间。
action 字符串 触发 Webhook 事件的操作。
目标 复杂类型 触发 Webhook 事件的事件目标。

目标

元素 类型 说明
mediaType 字符串 引用对象的 MIME 类型。
size Int32 内容的字节数。
digest 字符串 内容摘要,由注册表 V2 HTTP API 规范定义。
repository 字符串 存储库名称。
tag 字符串 图表标记名称。
name 字符串 图表名称。
version 字符串 图表版本。

有效负载示例:图表推送事件

{
  "id": "6356e9e0-627f-4fed-xxxx-d9059b5143ac",
  "timestamp": "2019-03-05T23:45:31.2614267Z",
  "action": "chart_push",
  "target": {
    "mediaType": "application/vnd.acr.helm.chart",
    "size": 25265,
    "digest": "sha256:xxxx8075264b5ba7c14c23672xxxx52ae6a3ebac1c47916e4efe19cd624dxxxx",
    "repository": "repo",
    "tag": "wordpress-5.4.0.tgz",
    "name": "wordpress",
    "version": "5.4.0.tgz"
  }
}

触发 chart_push 事件 Webhook 的示例 Azure CLI 命令:

az acr helm push wordpress-5.4.0.tgz --name MyRegistry

删除活动

删除映像存储库或清单时触发的 Webhook。 删除标记时不会触发 Webhook。

Delete 事件负载

元素 类型 说明
id 字符串 Webhook 事件的 ID。
timestamp DateTime 触发 Webhook 事件的时间。
action 字符串 触发 Webhook 事件的操作。
目标 复杂类型 触发 Webhook 事件的事件目标。
请求 复杂类型 生成 Webhook 事件的请求。

目标

元素 类型 说明
mediaType 字符串 引用对象的 MIME 类型。
digest 字符串 内容摘要,由注册表 V2 HTTP API 规范定义。
repository 字符串 存储库名称。

request

元素 类型 说明
id 字符串 启动事件的请求 ID。
host 字符串 注册表实例的外部可访问主机名,由传入请求中的 HTTP 主机标头指定。
method 字符串 生成事件的请求方法。
useragent 字符串 请求的用户代理标头。

有效负载示例:映像删除事件

{
    "id": "afc359ce-df7f-4e32-xxxx-1ff8aa80927b",
    "timestamp": "2017-11-17T16:54:53.657764628Z",
    "action": "delete",
    "target": {
      "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
      "digest": "sha256:xxxxd5c8786bb9e621a45ece0dbxxxx1cdc624ad20da9fe62e9d25490f33xxxx",
      "repository": "hello-world"
    },
    "request": {
      "id": "3d78b540-ab61-4f75-xxxx-7ca9ecf559b3",
      "host": "myregistry.azurecr.cn",
      "method": "DELETE",
      "useragent": "python-requests/2.18.4"
    }
  }

触发删除事件 Webhook 的示例 Azure CLI 命令:

# Delete repository
az acr repository delete --name MyRegistry --repository MyRepository

# Delete image
az acr repository delete --name MyRegistry --image MyRepository:MyTag

图表删除事件

删除 Helm 图表或存储库时触发的 Webhook。

图表删除事件有效负载

元素 类型 说明
id 字符串 Webhook 事件的 ID。
timestamp DateTime 触发 Webhook 事件的时间。
action 字符串 触发 Webhook 事件的操作。
目标 复杂类型 触发 Webhook 事件的事件目标。

目标

元素 类型 说明
mediaType 字符串 引用对象的 MIME 类型。
size Int32 内容的字节数。
digest 字符串 内容摘要,由注册表 V2 HTTP API 规范定义。
repository 字符串 存储库名称。
tag 字符串 图表标记名称。
name 字符串 图表名称。
version 字符串 图表版本。

有效负载示例:图表删除事件

{
  "id": "338a3ef7-ad68-4128-xxxx-fdd3af8e8f67",
  "timestamp": "2019-03-06T00:10:48.1270754Z",
  "action": "chart_delete",
  "target": {
    "mediaType": "application/vnd.acr.helm.chart",
    "size": 25265,
    "digest": "sha256:xxxx8075264b5ba7c14c23672xxxx52ae6a3ebac1c47916e4efe19cd624dxxxx",
    "repository": "repo",
    "tag": "wordpress-5.4.0.tgz",
    "name": "wordpress",
    "version": "5.4.0.tgz"
  }
}

触发 chart_delete 事件 Webhook 的示例 Azure CLI 命令:

az acr helm delete wordpress --version 5.4.0 --name MyRegistry

后续步骤

使用 Azure 容器注册表 webhook