推送映像

Azure Pipelines

Azure Pipelines可用于将映像推送到容器注册表,例如 Azure 容器注册表 (ACR) 、Docker Hub、Google 容器注册表等。

管道中的推送步骤

以下 YAML 代码片段展示了 Docker 注册表服务连接的用法,以及用于登录和推送到容器注册表的 Docker 任务。 Docker 注册表服务连接的实例充当安全选项,用于存储在推送映像之前登录到容器注册表所需的凭据。 可以在 Docker 任务中直接引用这些服务连接以登录到注册表,而无需添加用于 docker 登录的脚本任务以及设置用户名和密码的机密变量。

- task: Docker@2
  displayName: Push image
  inputs:
    containerRegistry: |
      $(dockerHub)
    repository: $(imageName)
    command: push
    tags: |
      test1
      test2

Azure 容器注册表

在Azure 容器注册表Do (cker注册表服务连接"选项下,可以选择与登录 Azure DevOps) 的用户的 AAD 标识关联的订阅 Azure DevOps) 和订阅中的容器注册表来创建服务连接。 随后可以从管道任务引用这些服务连接,如上面的 YAML 代码片段所示。

若要为包含 Dockerfile 的存储库创建新管道,生成并推送到Azure 容器注册表文档介绍了在存储库中检测到 Dockerfile 时 Azure Pipelines 自动建议的 Docker 模板。 Azure Pipelines 使用为模板配置提供的 Azure 订阅和 Azure 容器注册表 输入来自动创建 Docker 注册表服务连接,甚至通过引用创建的服务连接来构造正常运行的生成和推送管道。

Docker Hub

选择"Docker Hub 服务 连接"下的"配置"选项,并提供验证和创建服务连接所需的用户名和密码。

Google 容器注册表

以下步骤将演练如何创建与 Google 容器注册表关联的 Docker 注册表服务连接:

  1. 在 GCP 控制台中打开项目,然后打开Cloud Shell

  2. 若要节省键入项目 ID 和计算引擎区域选项的时间,请运行以下命令来设置默认配置值:

    gcloud config set project [PROJECT_NAME]
    gcloud config set compute/zone [ZONE]
    
  3. 将 替换为 GCP 项目的名称,将 替换为要用于创建资源 [PROJECT_NAME][ZONE] 的区域的名称。 如果不确定要选取哪个区域,请使用 us-central1-a 。 例如:

    gcloud config set project azure-pipelines-test-project-12345
    gcloud config set compute/zone us-central1-a
    
  4. 为项目启用容器注册表 API:

    gcloud services enable containerregistry.googleapis.com
    
  5. 创建服务帐户Azure Pipelines发布 Docker 映像:

    gcloud iam service-accounts create azure-pipelines-publisher --display-name "Azure Pipelines Publisher"
    
  6. 将存储管理员 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
    
  7. 生成服务帐户密钥:

    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:

    徽章

  8. 打开 named azure-pipelines-publisher-oneline.json文件。 在以下步骤之一中,需要此文件的内容:

  9. 在组织Azure DevOps,选择"Project设置",然后选择"Pipelines - 服务 连接"。

  10. 单击 "新建服务连接", 然后选择 "Docker 注册表"

  11. 在对话框中,输入以下字段的值:

  • Docker 注册表:,[PROJECT-ID] 其中 是 GCP 项目的名称。
  • Docker ID:
  • Docker 密码: 粘贴 的内容
  • 服务连接名称:
  1. 单击 " 保存"以创建服务连接