管理 build 依赖项

本页介绍了如何指定构建依赖项。Cloud Build 可让您将源代码依赖项与构建流程分开管理。

在 build 配置 文件中,您可以列出一个或多个要为构建克隆的代码库,以及提取这些代码库的顺序。以这种方式指定依赖项会将依赖项提取与构建过程本身分开。

如果您未在 build 配置中添加任何依赖项,Cloud Build 会克隆包含 build 配置的源代码库(对于触发的 build)或包含源代码的代码库(对于您从命令行调用的 build)。如果您在 build 配置文件中添加了依赖项,Cloud Build 仅会克隆 dependencies 字段中指定的代码库。

依赖项会按照您指定的顺序进行克隆。此外,依赖项提取会在执行任何用户指定的逻辑之前发生。因此,依赖项提取是可信的。

依赖项会显示在构建详情 页面的构建依赖项 标签页中。

准备工作

本页面中的说明假定您至少拥有以下两种代码库类型之一:

  • Git 代码库,可以是公开代码库,也可以是 关联到 Cloud Build 的 Git 代码库。

  • 一个通用代码库

为了确保具有添加 Developer Connect 代码库作为依赖项的必要 权限,请让您的管理员在您的服务帐号上向授予 Developer Connect Read Token Accessor (developerconnect.readTokenAccessor) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您的管理员还可以通过 自定义 角色 或其他 预定义 角色授予所需的权限。

指定依赖项

您可以通过向构建配置文件添加 dependencies 字段来指定依赖项。dependencies 是构建配置中的顶级属性,但您可以将其放在文件中的任何位置。

指定 GitHub 依赖项

如需指定对 GitHub 代码库的依赖项,请将以下 dependencies 配置添加到构建配置文件:

YAML

 dependencies:
 - gitSource:
     repository:
       url: 'URL'
       developerConnect: 'DC_RESOURCE_PATH'
     revision: 'REVISION'
     recurseSubmodules: 'true|false'
     fetchTags: 'true|false'
     depth: 'DEPTH'
     destPath: 'DEST_PATH'

JSON

 {
     "dependencies": {
         "gitSource": {
             "repository": {
                 "url": "URL"
                 "developerConnect": "DC_RESOURCE_PATH"
             },
             "revision": "REVISION",
             "recurseSubmodules": true|false,
             "fetchTags": true|false,
             "depth": "DEPTH",
             "destPath": "DEST_PATH",
         },
     },
 }

替换以下值:

  • URL:要提取的代码库的 HTTPS 网址。除非您的代码库使用 Developer Connect 连接到 Cloud Build,否则此字段是必填字段。

  • DC_RESOURCE_PATH:Developer Connect 代码库的 Google Cloud 资源 路径。例如,projects/my-project/locations/us-central1/connections/my-connection/gitRepositoryLinks/my-repo。 如果您的代码库使用 Developer Connect 连接到 Cloud Build,则此字段是必填字段。

    如果您的代码库使用 Developer Connect 进行连接,则需要以下内容:

  • REVISION:必填。要从代码库中提取的版本、提交哈希、标记或分支名称。

  • recurseSubmodules:'true|false':是否提取 子模块。

  • fetchTags:'true|false':可选。如果也应提取远程标记,则为 True(默认值为 false)。注意:当 depth1(默认值)时,git fetch 仅检索指向浅边界内提交的标记。 将 depth 设置为 -1 可提取所有历史标记。

  • DEPTH:可选,提取代码库历史记录的深度 。如果未指定,则提取最新提交。

    • 1:最新提交
    • 2:最近两次提交
    • 3:最近三次提交
    • -1:所有提交
  • DEST_PATH:必填。代码库克隆到的目录的路径。例如,my/repo

    设置 dest_path 后,系统会在 /workspace/<dest_path> 中提取代码库。dest_path 值必须是相对于构建工作目录的路径。

将通用工件指定为依赖项

如需将 通用工件 指定为依赖项,请将以下 dependencies 配置添加到构建 配置文件:

YAML

dependencies:
- genericArtifact:
    resource: RESOURCE
    destPath: PATH

JSON

{
  "dependencies": [
    {
      "genericArtifact": {
        "resource": "RESOURCE",
        "destPath": "PATH"
      }
    }
  ]
}

其中:

  • RESOURCE 是 Artifact Registry 通用代码库中通用工件的完整地址,格式如下:

    projects/PROJECT/locations/LOCATION/repositories/REPOSITORY/packages/PACKAGE/versions/VERSION

    我们强烈建议您在资源地址中添加工件的指纹,以便 Cloud Build 可以验证工件引用是否不可变。附加了指纹的软件包版本的格式如下:

    VERSION@dirsum_sha256=HASH_VALUE

    如需查找 Artifact Registry 代码库中工件的指纹,请参阅 检索代码库中软件包版本的指纹

  • PATH 是 Cloud Build 从您的代码库下载软件包到的文件夹的地址。如果该文件夹尚不存在,Cloud Build 会自动创建它。

后续步骤