在自动云构建期间无法提取 Google 源代码库

Can't Pull Google Source Repo During Automated Cloud Build

我有一个 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:

  1. 构建一个 cloudbuild.yaml 文件并包括以下步骤:

steps: # Pull Search Console repo to include in the build. - name: 'gcr.io/cloud-builders/gcloud' args: ['source', 'repos', 'clone', 'xxx']

  1. 在您的 Dockerfile 中,您可以将存储库从您的工作区复制到您的新映像中:

FROM xxx:latest # Copy the repo into Docker copy xxx /xxx

您可以阅读有关 creating a basic build configuration file here 的更多信息。

--network=cloudbuild 添加到您的 args 以允许构建器服务帐户凭据传递到您的 Dockerfile 步骤。

steps:
- name: gcr.io/cloud-builders/docker
  args: ['build', '-t', 'THE_IMAGE', '--network=cloudbuild', '.']