如何在Bitbucket Pipeline中拉取GCP私有GCR/Artifact Registry镜像?
配置Bitbucket Pipeline拉取Google私有GCR/Artifact Registry镜像
要让Bitbucket Pipeline成功拉取Google私有镜像仓库的镜像,需完成以下三步配置:
1. 准备Google服务账号密钥
- 创建Google Cloud服务账号,分配对应权限:
- 使用GCR时:授予
Storage Object Viewer角色 - 使用Artifact Registry时:授予
Artifact Registry Reader角色
- 使用GCR时:授予
- 导出该服务账号的JSON格式密钥文件。
2. 在Bitbucket仓库配置环境变量
进入仓库「Settings」→「Repository variables」,添加两个变量:
GCP_PROJECT_ID:填写你的Google Cloud项目IDGCP_SERVICE_ACCOUNT_KEY:粘贴JSON密钥文件的完整内容,勾选「Secured」选项保护密钥。
3. 修改Bitbucket Pipeline配置
在Pipeline步骤中添加镜像仓库认证逻辑,确保拉取镜像前完成登录:
GCR配置示例
definitions: steps: - step: &step1 name: step1 image: eu.gcr.io/$GCP_PROJECT_ID/my_private_image:tag before-script: # 通过服务账号密钥登录GCR - echo "$GCP_SERVICE_ACCOUNT_KEY" | docker login -u _json_key --password-stdin eu.gcr.io script: - ...
Artifact Registry配置示例
definitions: steps: - step: &step1 name: step1 # Artifact Registry镜像地址格式:[区域]-docker.pkg.dev/[项目ID]/[仓库名]/[镜像名]:tag image: europe-west1-docker.pkg.dev/$GCP_PROJECT_ID/my_repo/my_private_image:tag before-script: # 通过服务账号密钥登录Artifact Registry - echo "$GCP_SERVICE_ACCOUNT_KEY" | docker login -u _json_key --password-stdin europe-west1-docker.pkg.dev script: - ...
注意事项
- 确认镜像地址格式正确:GCR为
[区域].gcr.io/[项目ID]/[镜像名]:tag,Artifact Registry为[区域]-docker.pkg.dev/[项目ID]/[仓库名]/[镜像名]:tag - 服务账号必须拥有镜像仓库的拉取权限,否则会出现认证失败或权限不足错误
- 务必将
GCP_SERVICE_ACCOUNT_KEY设置为Secured变量,防止密钥泄露
内容的提问来源于stack exchange,提问作者Naran
相关产品推荐
相关产品推荐

