我正在尝试通过 GitLab ci 管道将 Docker 映像推送到 Google Cloud Registry。
图像已构建,但当需要推送到注册表时,我收到以下错误。
<块引用>拒绝:项目“xxx-dev01-xxxxx”的令牌交换失败。组织 违反政策:“欧盟”违反约束 '约束/gcp.resourceLocations'
.gitlab.yaml
deploy:dev:
allow_failure: true
extends:
- .prod
stage: Deploy
image: google/cloud-sdk
services:
- docker:dind
variables:
IMAGE_TAG: "eu.gcr.io/$PROJECT_ID/testapp"
before_script:
- echo $GCLOUD_SERVICE_KEY > ${HOME}/gcloud-service-key.json
- gcloud auth activate-service-account --key-file=${HOME}/gcloud-service-key.json
- gcloud config set project $DEV_PROJECT_ID
- gcloud auth configure-docker
- gcloud services enable containerregistry.googleapis.com
- docker login -u _json_key --password-stdin https://eu.gcr.io < ${HOME}/gcloud-service-key.json
script:
- docker build . -t "$IMAGE_TAG"
- docker push $IMAGE_TAG:latest
when: manual
答案 0 :(得分:2)
这似乎违反了您的组织政策之一,即“资源位置”政策。
根据文档,您的公司似乎阻止您将数据存储到此位置(区域)。
https://cloud.google.com/resource-manager/docs/organization-policy/defining-locations
您可能想尝试使用此列表中的另一个更改 eu.gcr.io
。
https://cloud.google.com/container-registry/docs/pushing-and-pulling#add-registry