推送映像
Azure DevOps Services
使用 Azure Pipelines 将映像推送到容器注册表,例如 Azure 容器注册表、Docker Hub 或 Google 容器注册表。 Azure 容器注册表是基于开源 Docker 注册表 2.0 的托管注册表服务。
有关生成映像并将其推送到容器注册表的教程,请参阅生成 Docker 映像并将其推送到 Azure 容器注册表。
若要了解如何生成可通过 Azure Pipelines 部署的容器映像,请参阅生成容器映像以部署应用。
关于 Docker 任务
你将使用 Docker@2 任务生成或推送 Docker 映像、登录或注销、启动或停止容器,或者运行 Docker 命令。
该任务使用 Docker 注册表服务连接Azure 容器注册表登录并推送到容器注册表。 创建 Docker 注册表服务连接的过程因注册表而异。
Docker 注册表服务连接在推送映像之前会将凭据存储到容器注册表中。 你也可以直接在 Docker 中引用服务连接,而无需使用额外的脚本任务。
创建 Docker 服务连接
需要遵循不同的过程为 Azure 容器注册表、Docker Hub 和 Google 容器注册表创建服务连接。
使用 Azure 容器注册表选项时,将使用订阅(与登录到 Azure DevOps 的用户的 Microsoft Entra 标识相关联)和订阅中的容器注册表来创建服务连接。
注意
此服务连接方法使用服务主体而不是工作负荷标识联合身份验证进行身份验证。 若要了解如何改用工作负荷标识和Azure 容器注册表,请参阅管理服务连接Azure 容器注册表。
当你为包含 Dockerfile 的存储库创建新管道时,Azure Pipelines 将检测该存储库中的 Dockerfile。 若要开始此过程,请创建一个新管道,并选择包含 Dockerfile 的存储库。
在“配置”选项卡中,选择“Docker - 生成映像并将其推送到 Azure 容器注册表”任务。
选择你的 Azure 订阅,然后选择“继续”。
从下拉菜单中选择“容器注册表”,然后为容器映像提供“映像名称”。
完成后,选择“验证并配置”。
Azure Pipelines 在创建管道的过程中会执行以下操作:
有关更详细的概述,请参阅生成并推送到 Azure 容器注册表文档。
在“Docker 注册表服务连接”下选择“Docker Hub”选项,然后提供你的用户名和密码以创建 Docker 服务连接。
若要创建与 Google 容器注册表关联的 Docker 服务连接,请执行以下操作:
在 GCP 控制台中打开你的项目,然后打开 Cloud Shell
为了节省键入项目 ID 和计算引擎区域选项所花费的时间,请运行以下命令来设置默认配置值:
gcloud config set project [PROJECT_NAME]
gcloud config set compute/zone [ZONE]
请将 [PROJECT_NAME]
替换为你的 GCP 项目名称,将 [ZONE]
替换为用于创建资源的区域的名称。 如果不确定要选择哪个区域,请使用 us-central1-a
。 例如:
gcloud config set project azure-pipelines-test-project-12345
gcloud config set compute/zone us-central1-a
为项目启用容器注册表 API:
gcloud services enable containerregistry.googleapis.com
为 Azure Pipelines 创建服务帐户以发布 Docker 映像:
gcloud iam service-accounts create azure-pipelines-publisher --display-name "Azure Pipelines Publisher"
将存储管理员 IAM 角色分配给服务帐户:
PROJECT_NUMBER=$(gcloud projects describe \
$(gcloud config get-value core/project) \
--format='value(projectNumber)')
AZURE_PIPELINES_PUBLISHER=$(gcloud iam service-accounts list \
--filter="displayName:Azure Pipelines Publisher" \
--format='value(email)')
gcloud projects add-iam-policy-binding \
$(gcloud config get-value core/project) \
--member serviceAccount:$AZURE_PIPELINES_PUBLISHER \
--role roles/storage.admin
生成服务帐户密钥:
gcloud iam service-accounts keys create \
azure-pipelines-publisher.json --iam-account $AZURE_PIPELINES_PUBLISHER
tr -d '\n' < azure-pipelines-publisher.json > azure-pipelines-publisher-oneline.json
单击 Cloud Shell 右上角的按钮启动代码编辑器:
打开 named azure-pipelines-publisher-oneline.json
文件。 在下列其中一个步骤中,需要用到此文件的内容:
在你的 Azure DevOps 组织中选择“项目设置”,然后选择“管道”->“服务连接”。
选择“新建服务连接”,然后选择“Docker 注册表”
在对话框中,输入以下字段的值:
- Docker 注册表:
https://gcr.io/[PROJECT-ID]
GCP 项目的名称。[PROJECT-ID]
- Docker ID:
_json_key
- Docker 密码:粘贴
azure-pipelines-publisher-oneline.json
的内容
- 服务连接名称:
gcrServiceConnection
选择“保存”以创建服务连接