与 Cloud Build 集成

本页面介绍了如何配置 Cloud Build 以将构建的工件存储在 Artifact Registry 代码库中。

准备工作

  1. 如果目标代码库不存在,请创建新代码库
  2. 默认的 Cloud Build 服务帐号有权从同一项目中的代码库进行上传和下载。如果 Cloud Build 与您的代码库位于不同的项目中,您必须向代码库所在项目中的 Cloud Build 服务帐号授予权限

配置 Docker 构建

授予对目标代码库的权限后,您便可以配置 Docker 以进行身份验证并将软件包推送到代码库。建议使用 Cloud Build 服务帐号进行集成。

如需配置 Docker,请执行以下操作:

  1. 为 Docker 设置身份验证

  2. 在构建配置文件中,添加用于构建和推送映像的步骤。

    在以下示例中,与构建配置文件位于同一目录中的映像使用以下值:

    • 代码库位置 us-central1
    • 构建的项目 ID,已通过默认替代变量 $PROJECT_ID 进行解析
    • 代码库名称 my-repo
    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'us-central1-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}', '.' ]
    images:
    - 'us-central1-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}'
    

    变量 ${_REPOSITORY}${_IMAGE} 用于表示代码库名称和代码库中的映像名称,这样一来,在构建时便可使用自定义 Cloud Build 替换内容来替换这些变量。

    如果您想使用相同的构建配置文件将映像推送到不同环境(例如测试、预演或生产环境)的代码库,则此方法非常有用。

    例如,以下命令将 my-repo 替换为代码库名称,将 my-image 替换为映像名称。

    gcloud builds submit --config=cloudbuild.yaml \
      --substitutions=_REPOSITORY="my-repo",_IMAGE="my-image" .
    

配置 Maven 构建

授予对目标代码库的权限后,您便可以配置 Maven 以进行身份验证并将软件包推送到代码库。建议使用 Cloud Build 服务帐号进行集成。

如需配置 Maven,请执行以下操作:

  1. 为 Maven 设置身份验证。请务必在 pom.xml 文件中指定正确的目标项目和代码库。

  2. 在 Cloud Build 构建配置文件中,添加使用 Maven 上传软件包的步骤:

    steps:
    - name: gcr.io/cloud-builders/mvn
      args: ['deploy']
    

配置 npm 构建

授予对目标代码库的权限后,您便可以配置 npm 以进行身份验证并将软件包推送到代码库。建议使用 Cloud Build 服务帐号进行集成。

如需配置 npm,请执行以下操作:

  1. 为 npm 设置身份验证。请务必在 .npmrc 文件中指定正确的目标项目和代码库。

  2. .npmrc 文件放在 Cloud Build 构建配置文件所在的目录中,以便 Cloud Build 可以找到您的身份验证设置。

  3. 在构建配置文件中,添加将软件包上传到代码库的步骤。

    steps:
    - name: gcr.io/cloud-builders/npm
      args: ['publish', ${_PACKAGE}]
    

    变量 ${_PACKAGE} 表示软件包。您可以在构建时将此自定义的 Cloud Build 替代变量替换为软件包、文件夹或已采用 gzip 解压的 tar 压缩文件(其中包含 package.json 和软件包中的其他文件)的位置。

    例如,此命令会上传目录 src 中的软件包,该软件包与 .npmrc 文件和构建配置文件位于同一目录中。

    gcloud builds submit --config=cloudbuild.yaml --substitutions=_PACKAGE="src" .