如何配置ACR与Azure DevOps流水线联动:新镜像触发及Webhook设置
配置ACR镜像推送自动触发Azure DevOps流水线
1. 获取Azure DevOps服务挂钩的触发URI
- 打开你的Azure DevOps项目,点击左下角「项目设置」
- 左侧菜单选择「服务挂钩」,点击「创建订阅」
- 在服务类型列表里选「Azure 容器注册表」,点击「下一步」
- 触发器配置:选择要关联的ACR实例,勾选「镜像推送」事件,按需设置镜像标签过滤规则(比如
prod-*只触发生产标签镜像,*则触发所有) - 操作配置:选择要触发的目标流水线,确认配置后,复制页面上的服务挂钩URL——这个就是后续ACR Webhook需要填写的POST通知URI
2. 配置ACR的Webhook
- 登录Azure门户,进入目标ACR实例
- 左侧菜单选择「Webhook」,点击「添加」
- 填写Webhook参数:
- 名称:自定义命名(比如
devops-pipeline-trigger) - 服务URI:粘贴刚才从Azure DevOps复制的服务挂钩URL
- 触发事件:仅勾选「镜像推送」(避免不必要的触发)
- 作用域:可指定特定仓库或标签(比如
myapp:*,留空则对所有镜像生效)
- 名称:自定义命名(比如
- 点击「创建」,可通过「测试」按钮验证Webhook是否能正常向Azure DevOps发送请求
3. 流水线YAML的补充配置
默认情况下,服务挂钩触发的流水线不需要额外YAML声明,但可以添加条件限制或获取镜像信息:
- 若要关闭代码提交触发,仅保留ACR推送触发:
trigger: none # 禁用代码源触发 jobs: - job: Deploy condition: eq(variables['Build.Reason'], 'ResourceTrigger') # 仅当资源触发(ACR推送)时运行 steps: - script: echo "触发镜像:$(ACR.Image),标签:$(ACR.Tag)" displayName: 打印ACR镜像信息
- 系统会自动传入ACR相关变量,比如
$(ACR.Image)(完整镜像名)、$(ACR.Tag)(镜像标签),可直接在步骤中使用
内容的提问来源于stack exchange,提问作者Vaish
相关产品推荐
相关产品推荐

