推送映像

Azure DevOps Services

Azure Pipelines可用來將映射推送至容器登錄,例如Azure Container Registry (ACR) 、Docker Hub、Google Container Registries 等等。

管線中的推送步驟

下列 YAML 程式碼片段示範 Docker 登錄服務連線 的使用方式,以及用來登入並推送至容器登錄的 Docker 工作。 Docker 登錄服務連線的實例可作為安全選項,以在推送映射之前儲存登入容器登錄所需的認證。 這些服務連線可以直接在 Docker 工作中參考,以登入登錄,而不需要新增 Docker 登入的腳本工作。

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

Azure Container Registry

使用Docker 登錄服務連線的 [Azure Container Registry] 選項時,可以選擇與訂用帳戶內使用者登入Azure DevOps) 和容器登錄的Azure Active Directory身分識別相關聯的訂用帳戶 (來建立服務連線。 稍後可以從管線工作參考這些服務連線,如上述 YAML 程式碼片段所示。

為包含 Dockerfile 的存放庫建立新的管線時,建置和推送至Azure Container Registry檔描述在偵測存放庫中 Dockerfile 時,Azure Pipelines自動建議的 Docker 範本。 Azure Pipelines會使用提供給範本組態的 Azure 訂用帳戶和Azure Container Registry輸入來自動建立 Docker 登錄服務連線,甚至藉由參考已建立的服務連線來建構正常運作的組建和推送管線。

Docker Hub

選擇Docker 登錄服務連線下的 [Docker Hub] 選項,並提供驗證和建立服務連線所需的使用者名稱和密碼。

Google Container Registry

下列步驟將逐步解說建立與 Google Container Registry 相關聯的 Docker 登錄服務連線:

  1. 在 GCP 主控台中開啟您的專案,然後開啟 Cloud Shell

  2. 若要節省時間輸入專案識別碼和計算引擎區域選項,請執行下列命令來設定預設組態值:

    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. 為您的專案啟用 Container Registry 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右上角的按鈕,以啟動程式碼編輯器:

    Badge

  8. 開啟檔案 named azure-pipelines-publisher-oneline.json。 在下列步驟之一中,您將需要此檔案的內容:

  9. 在您的Azure DevOps組織中,選取[Project設定],然後選取[Pipelines - > 服務連線]。

  10. 選取 [新增服務連線] ,然後選擇 [Docker 登錄]

  11. 在對話方塊中,輸入下欄欄位的值:

  • Docker Registry:https://gcr.io/[PROJECT-ID] ,其中 [PROJECT-ID] 是 GCP 專案的名稱。
  • Docker 識別碼:_json_key
  • Docker 密碼: 貼上 的內容 azure-pipelines-publisher-oneline.json
  • 服務連線名稱:gcrServiceConnection
  1. 選取 [儲存 ] 以建立服務連線