我有一个Dockerfile
,我正在使用它来构建可在Google Compute Engine上运行的图像。
Dockerfile
的一部分应提取Google Cloud Source Repo并将其添加到图像中。
使用Cloud Builder时出现以下错误:
```
Step 6/6 : RUN gcloud source repos clone repoXXX --project=projectXXX
---> Running in xxx
[91mERROR: (gcloud.source.repos.clone) You do not currently have an active account selected.
Please run:
$ gcloud auth login
to obtain new credentials, or if you have already logged in with a different account:
$ gcloud config set account ACCOUNT
to select an already authenticated account to use.
The command '/bin/sh -c gcloud source repos clone repoXXX --
project=projectXXX' returned a non-zero code: 1
```
我不确定我在做什么错吗?
我没有使用cloudbuild.yaml
文件,但是我认为cloudbuilder服务帐户将能够提取存储库,因为它在IAM中具有“编辑者”访问权限。
如何成功构建映像?
更新:
如果您发现了这个问题,则可以按照以下两个步骤构建Google Cloud Source Repos:
cloudbuild.yaml
文件,并包括以下步骤:
steps:
# Pull Search Console repo to include in the build.
- name: 'gcr.io/cloud-builders/gcloud'
args: ['source', 'repos', 'clone', 'xxx']
Dockerfile
中,您可以将工作区中的存储库复制到新图像中:
FROM xxx:latest
# Copy the repo into Docker
copy xxx /xxx
您可以了解有关creating a basic build configuration file here的更多信息。
答案 0 :(得分:2)
将--network=cloudbuild
添加到您的args
中,以允许构建器服务帐户凭据传递到您的Dockerfile步骤。
steps:
- name: gcr.io/cloud-builders/docker
args: ['build', '-t', 'THE_IMAGE', '--network=cloudbuild', '.']