315 字
2 分鐘
Azure DevOps 部署到 GKE (6) — Build Image
2023-03-26
無標籤

本篇將說明如何在Azure Pipelines打包dockerfile,並將image上傳到Google Artifact Registry上。建議先閱讀完Azure DevOps 部署到 VM,較能熟悉的操作Azure DevOps。


建立Azure DevOps Project#

先建立一個空白的repo,並使用上一篇文產生的服務帳戶JSON檔,將JSON檔上傳到Pipelines > Library > Secure files

到git repo新增檔案Dockerfile

Terminal window
FROM nginx:1.23.1
RUN echo "Hello World" > /usr/share/nginx/html/index.html

在repo新增一個azure-pipelines.yml,語法說明如下:

  1. DownloadSecureFile@1取得GCP服務帳號的secret,secureFile輸入剛剛上傳檔案的檔名
  2. 使用gcloud登入後,取得registry的權限
  3. 再來使用微軟提供Docker@2語法做docker build & push,repository填入registry存放區目標,
trigger:
- main
resources:
- repo: self
variables:
tag: '$(Build.BuildNumber)'
stages:
- stage: Build
displayName: Build image
jobs:
- job: Build
displayName: Build
pool:
vmImage: ubuntu-latest
steps:
- task: DownloadSecureFile@1
name: GCPsecret
displayName: 'Download CA certificate'
inputs:
secureFile: 'a.json'
- script: |
gcloud auth login --cred-file $(GCPsecret.secureFilePath)
gcloud auth configure-docker --quiet asia-east1-docker.pkg.dev
- task: Docker@2
displayName: Build image and push
inputs:
command: buildAndPush
dockerfile: '$(Build.SourcesDirectory)/Dockerfile'
repository: asia-east1-docker.pkg.dev/it-production-377006/nginx/b
tags: |
$(tag)

執行Pipelines#

再來到Pipelines選擇這個repo,並開始跑pipeline,跑完後就成功上傳到Google Artifact Registry

再來到GCP後台,就可以看到已經上傳的image


結語#

我們將gcloud語法整合到Azure DevOps Pipelines,就可以簡單又快速的完成上傳docker images。