-
源代码更新时触发
-
基础映像更新时触发
-
按计划触发
-
多步骤任务
- 使用基于多步骤、多容器的工作流扩展 ACR 任务的单一映像生成和推送功能。
每个 ACR 任务有一个关联的
源代码上下文
- 用于生成容器映像或其他项目的一组源文件的位置。 示例上下文包括 Git 存储库或本地文件系统。
任务还可以利用
运行变量
,使你能够重复使用任务定义,并标准化映像和项目的标记。
内部循环开发周期是指编写代码、生成和测试应用程序,然后提交到源代码管理的迭代过程,它事实上是容器生命周期管理的起点。
在你提交第一行代码之前,ACR 任务的
快速任务
功能可以通过将容器映像生成卸载到 Azure,来提供集成式开发体验。 使用快速生成可以在提交代码之前验证自动化生成定义和捕获潜在的问题。
Azure CLI 中的
az acr build
命令使用我们熟悉的
docker build
格式提取
上下文
(要生成的文件集),将其发送到 ACR 任务,并在完成后将生成的映像默认推送到其注册表。
如需简介,请参阅在 Azure 容器注册表中
生成和运行容器映像
的快速入门。
ACR 任务旨在用作容器生命周期基元。 例如,将 ACR 任务集成到 CI/CD 解决方案。 然后,CI/CD 解决方案可以结合
服务主体
执行
az login
,发出
az acr build
命令来启动映像生成。
第一篇 ACR 任务教程
使用 Azure 容器注册表任务在云中生成容器映像
中介绍了快速任务的用法。
Azure 容器注册表提供
az acr pack build
命令(预览版)让你直接从源代码生成和推送映像,而无需使用 Dockerfile。 此工具使用
云原生生成包
基于应用程序源代码生成和推送映像。
源代码更新时触发任务
向 GitHub 或 Azure DevOps 中的公共或专用 Git 存储库提交代码或者发出或更新拉取请求时,触发容器映像生成或多步骤任务。 例如,使用 Azure CLI 命令
az acr task create
并指定 Git 存储库以及可选的分支和 Dockerfile,来配置生成任务。 当团队在存储库中更新代码时,ACR 任务创建的 Webhook 会触发存储库中定义的容器映像的生成。
将 Git 存储库设置为任务的上下文时,ACR 任务支持以下触发器:
默认已启用
目前,ACR 任务不支持 GitHub Enterprise 存储库中的提交或拉取请求触发器。
第二篇 ACR 任务教程
使用 Azure 容器注册表任务自动执行容器映像生成
中介绍了如何在提交源代码时触发生成。
个人访问令牌
若要配置源代码更新触发器,你需要为任务提供个人访问令牌 (PAT),以便在公共或专用 GitHub 或 Azure DevOps 存储库中设置 Webhook。 PAT 所需的范围如下:
存储库类型
GitHub
DevOps
若要创建 PAT,请参阅
GitHub
或
Azure DevOps
文档。
自动执行 OS 和框架修补
真正增强容器生成工作流的 ACR 任务的强大之处在于,它能够检测“基础映像” 的更新。 基础映像是大多数容器映像的一项功能,它是一个或多个应用程序映像所基于的父映像。 基础映像通常包含操作系统,有时候包含应用程序框架。
可以设置一个 ACR 任务,在它生成应用程序映像时跟踪对基础映像的依赖关系。 将更新的基础映像将推送到注册表时,或者在公共存储库(例如 Docker Hub)中更新基础映像时,ACR 任务可以基于该映像自动生成任何应用程序映像。
通过这种自动检测和重新生成,ACR 任务能够节省在正常情况下手动跟踪和更新引用已更新基础映像的每个应用程序映像所需的时间和精力。
详细了解 ACR 任务的
基础映像更新触发器
。 参阅
在 Azure 容器注册表中更新基础映像时自动生成容器映像
教程,了解在将基础映像推送到容器注册表时如何触发映像生成。
(可选)创建或更新任务时,通过设置一个或多个计时器触发器来计划任务。 计划任务有助于按定义的计划运行容器工作负荷,或者对定期推送到注册表的映像运行维护操作或测试。 有关详细信息,请参阅
按定义的计划运行 ACR 任务
。
多步骤任务
多步骤任务提供用于在云中构建、测试和修补容器映像的基于步骤的任务定义和执行。 在
YAML 文件
中定义的任务步骤将指定针对容器映像或其他项目执行的各项生成和推送操作。 它们还可以定义一个或多个容器的执行,每个步骤都使用容器作为其执行环境。
例如,可以创建一个多步骤任务来自动完成以下操作:
-
生成 Web 应用程序映像
-
运行 Web 应用程序容器
-
生成 Web 应用程序测试映像
-
运行针对正在运行的应用程序容器执行测试的 Web 应用程序测试容器
-
如果测试通过,则生成 Helm 图表存档包
-
使用新的 Helm 图表存档包执行
helm upgrade
使用多步骤任务可将映像的生成、运行和测试操作拆分成组合性更强的步骤,并支持步骤间的依赖关系。 使用 ACR 任务中的多步骤任务,可以更精细地控制映像生成、测试,以及 OS 和框架修补工作流。
若要了解多步骤任务,请参阅
在 ACR 任务中运行多步骤生成、测试和修补任务
。
上下文位置
下表显示了 ACR 任务支持的上下文位置的示例:
上下文位置
GitHub 子文件夹
公共或专用 GitHub 存储库中某个子文件夹内的文件。 示例显示了分支和子文件夹规范的组合。
https://github.com/gituser/myapp-repo.git#mybranch:myfolder
GitHub 提交
公共或专用 GitHub 存储库中的特定提交。 示例显示了提交哈希 (SHA) 和子文件夹规范的组合。
https://github.com/gituser/myapp-repo.git#git-commit-hash:myfolder
Azure DevOps 子文件夹
公共或专用 Azure 存储库中某个子文件夹内的文件。 示例显示了分支和子文件夹规范的组合。
https://dev.azure.com/user/myproject/_git/myapp-repo#mybranch:myfolder
远程 tarball
远程 Web 服务器上某个压缩存档中的文件。
http://remoteserver/myapp.tar.gz
容器注册表中的项目
容器注册表存储库中的
OCI 项目
文件。
oci://myregistry.azurecr.io/myartifact:mytag
查看任务输出
每个任务运行都会生成日志输出,检查该输出即可确定任务步骤是否已成功运行。 手动触发某个任务时,会将任务运行的日志输出流式传输到控制台,并将其存储起来供以后检索。 自动触发某个任务后(例如,提交源代码或更新基础映像后触发),只会存储任务日志。 在 Azure 门户中查看运行日志,或者使用
az acr task logs
命令。
请参阅有关
查看和管理任务日志
的详细信息。
如果你已准备好在云中自动执行容器映像的生成和维护,请查看
ACR 任务教程系列
。
可以选择安装
适用于 Visual Studio Code 的 Docker 扩展
以及适用于 Azure 容器注册表的
Azure 帐户
扩展。 通过 Azure 容器注册表拉取和推送映像,或者运行 ACR 任务,这一切都可以在 Visual Studio Code 中进行。