操作场景
腾讯云容器镜像服务(Tencent Container Registry,TCR)支持用户配置并使用灵活的触发器功能。可通过在实例内配置合适的触发器,快速接入现有研发流程及 CI/CD 平台,实现镜像更新自动触发应用部署等容器 DevOps 场景。
触发器功能允许用户自定义创建触发器规则,并支持查看触发日志。其中,触发动作同时支持容器镜像及 Helm Chart 的推送,拉取及删除操作。触发规则支持灵活的正则表达式过滤、指定实例内命名空间及通过配置镜像仓库和版本的正则过滤规则,实现仅部分仓库或特殊命名格式的镜像版本可启动触发器。自定义 Header 功能支持以 Key:Value
的形式配置访问目标 URL 时的 Header,可用于鉴权等场景。
前提条件
在创建并管理 TCR 企业版实例的触发器前,您需要完成以下准备工作:
- 已成功 购买 TCR 企业版实例。
- 如果使用子账号进行操作,请参考 企业版授权方案示例 提前为子账号授予对应实例的操作权限。
操作步骤
创建触发器
- 登录 容器镜像服务 控制台,选择左侧导航栏中的【触发器】。
在“触发器”页面即可查看当前实例内的触发器规则列表。如需切换实例,请在页面上方的“实例名称”下拉列表中进行选择。 - 单击【新建】,在弹出的“新建触发器”窗口中,参考以下提示进行规则配置。如下图所示:
- 名称:实例规则名称,支持小写字母、数字及(
-
、.
、_
)三种符号,且需以字母数字开头。本文以webhook-demo
为例。 - 描述:规则描述,支持中文。
- 触发动作:当前支持推送镜像、删除镜像,上传 Helm Chart 及删除 Helm Chart 四种触发动作。触发器执行时,发起的 webhook 请求内将包含该触发动作信息。
- 触发规则:
- 触发实例:触发器所属的实例,即为当前已选择实例,不可修改。
- 命名空间:触发器生效的命名空间,如果列表为空,请先在该实例内 创建命名空间。
- 仓库名称:触发器生效的仓库名称,支持对镜像仓库及 Helm Chart 仓库进行正则匹配。
说明:
正则表达式规则可填写如
nginx-*
,{repo1,repo2}
等,其中:*
: 匹配不包含 '/' 的任何字段。**
:匹配包含 '/' 的任何字段。?
:匹配任何单个非 '/' 的字符。{选项1,选项2,...}
:同时匹配多个选项。
- 版本Tag:触发器生效的 Tag,支持正则匹配,规则与仓库名称一致。如需所有版本均可触发,可不填写。
- URL:触发器被触发后,发起请求的目标 URL。触发器将向该 URL 地址发起 POST 请求,请求 body 中将包含触发动作、触发规则等信息。
- Header:触发器发起 POST 请求时,支持以 Key:Value 形式输入可携带的 Header 信息。例如,
Authentication: xxxxxxx
。
- 名称:实例规则名称,支持小写字母、数字及(
- 单击【确定】即可创建同步规则。
管理触发器规则
成功创建后即可在“触发器”页面查看已创建的触发器规则,您可执行以下操作管理触发器规则。如下图所示:
- 查看触发日志:单击触发器规则名称,或触发器规则名称右侧的【触发日志】即可查看该规则触发日志,详情请参见 查看触发器日志。
- 修改规则状态:表示规则启用,表示规则关闭。新建的实例同步规则默认为启用状态,您可自行调整。
- 配置:重新配置触发器规则,可配置全部参数。
- 删除:删除该触发器规则。
查看触发器日志
单击指定触发器规则名称,或触发器规则名称右侧的【触发日志】,即可查看该规则的触发日志。如下图所示:
包含信息如下:
- 任务ID:实例内唯一的触发器任务 ID。
- 触发动作:产生该次触发的触发动作,例如推送镜像。
- 触发仓库:产生该次触发动作的仓库资源。
- 状态:触发器执行 webhook 请求的成功状态 。
- 创建时间:该次触发的启动时间,即发起 webhook 请求的时间。
相关信息
Webhook 请求格式参考
当用户对符合规则的资源执行相应动作时,例如向指定镜像仓库推送新的镜像时,则相应触发器将被触发,并向规则中配置的 URL 发起 HTTP POST 请求,请求 Body 中包含的触发动作、仓库路径等信息。以下为推送镜像触发后并经解析的请求 Body 信息,可供开发 Webhook 服务端参考。
{
"type": "pushImage",
"occur_at": 1589106605,
"event_data": {
"resources": [
{
"digest": "sha256:89a42c3ba15f09a3fbe39856bddacdf9e94cd03df7403cad4fc105xxxx268fc9",
"tag": "v1.10.0",
"resource_url": "xxx-bj.tencentcloudcr.com/public/nginx:v1.10.0"
}
],
"repository": {
"date_created": 1587119137,
"name": "nginx",
"namespace": "public",
"repo_full_name": "public/nginx",
"repo_type": "public"
}
},
"operator": "332133xxxx"
}