GitLab CI CD GCP Docker GCR


底下我們要推到 GCP GCR 用到的 yaml 檔

image: docker:19.03.11

variables:
  GCP_PROJECT_ID: your-project-id
  GCP_REGISTRY: us.gcr.io
  GCP_SOURCE_IMAGE_NAME: cicdTest

dockerBuildGCP:
  stage: deploy-Docker-Build
  script:
    - docker login -u _json_key --password-stdin https://us.gcr.io < $GCP_ACCOUNT_KEY
    - DOCKER_BUILDKIT=1 docker build . -t $GCP_SOURCE_IMAGE_NAME
    - docker tag $GCP_SOURCE_IMAGE_NAME $GCP_REGISTRY/$GCP_PROJECT_ID/$GCP_SOURCE_IMAGE_NAME
    - docker push $GCP_REGISTRY/$GCP_PROJECT_ID/$GCP_SOURCE_IMAGE_NAME
    - docker logout https://us.gcr.io

基本上跟上一篇 AWS ECR 差別不大,差別只在於 Docker 的登入方式不同

所以我們只講解 Docker 登入的方式

GCP GCR DOCKER 登入指令說明

首先我們需要在 GCP 建立一個 service account, 給他 Storage Admin 的 role.

然後建立 service account 的 json key

gcloud iam service-accounts keys create --iam-account {iam email} {file name}


然後把 file 的內容放到 environment variables 裡面 我們這裡使用 GCP_ACCOUNT_KEY 當成 key 名

docker login -u _json_key --password-stdin https://us.gcr.io < $GCP_ACCOUNT_KEY

然後把 jsonkey 放進去當 password

登入搞定

接下來就是

Docker Build

Docker Tag

Docker Push

最後記得要

docker logut

docker logut

docker logut

很重要要講三次

跑完你就可以去網站上看到 image 已經推上去了


打完收工