构建和测试 Node.js 应用

本页面介绍了如何使用 Cloud Build 构建和测试 Node.js 将构建的工件存储在 Artifact Registry 的 npm 代码库中,以及 生成构建出处信息。

通过 Cloud Build,您可以使用任何公开可用的容器映像来执行任务。公众 Docker Hub 中的 node 映像 预装了 npm 工具。你可以配置 Cloud Build 使用此工具构建 Node.js 项目。

准备工作

本页面的说明假定您熟悉 Node.js。此外:

使用 npm 进行构建

如需在 Docker Hub 中的 node 映像中执行任务,请在 Cloud Build 配置文件name 字���中指定映像网址。Cloud Build 会使用该映像的默认入口点启动 name 字段中指定的容器。如需替换默认入口点,并定义构建步骤被调用时的运行方式,请在您的构建步骤中添加一个 entrypoint 字段。Docker Hub 中的 node 映像 已预安装 npm 工具。在 entrypoint 字段中指定所需的工具, 可以将它们作为构建步骤的入口点进行调用。

在以下构建配置文件示例中:

  • name 字段指定了 Cloud Build 使用 Docker Hub 中的 node 映像来执行您的任务。在您指定 node 时, 您可以省略节点版本,默认为 :latest; 请指定节点版本 使用特定版本例如,name: node 将使用最新的 版本的节点,name: node:12 将使用 node:12
  • entrypoint 字段指定使用 npm 工具 在调用 node 映像时触发。

     steps:
     - name: 'node'
       entrypoint: 'npm'
    

配置 Node.js 构建

  1. 在项目根目录中,创建一个名为 cloudbuild.yaml 的配置文件。

  2. 安装依赖项:在构建应用之前, 请确保从 npm 安装项目的所有依赖项。您 可以在 npm build 中使用 install 命令安装依赖项 操作。构建步骤的 args 字段采用参数列表并传递 传递给 name 字段引用的图片。在构建配置文件中 将 install 添加到 args 字段以调用 install 命令:

     steps:
     - name: 'node'
       entrypoint: 'npm'
       args: ['install']
    
  3. 添加测试:如果您已经在 package.json 中定义了 test 脚本,则可以将 test 添加到 args 字段,从而将 Cloud Build 配置为运行该脚本:

     steps:
     - name: 'node'
       entrypoint: 'npm'
       args: ['install']
     - name: 'node'
       entrypoint: 'npm'
       args: ['test']
    
  4. 运行自定义命令:如果您的 package.json 包含任何自定义命令,则可以配置 Cloud Build 以运行该命令。在args中 字段中,添加 run 作为第一个参数,后跟自定义名称 命令。以下构建配置文件包含运行自定义 命令(名为 build):

     steps:
     - name: 'node'
        entrypoint: 'npm'
        args: ['install']
     - name: 'node'
        entrypoint: 'npm'
        args: ['test']
     - name: 'node'
        entrypoint: 'npm'
        args: ['run', 'build']
    
  5. 上传到 Artifact Registry

    在配置文件中,添加 npmPackages 字段并指定 npm Artifact Registry 中的代码库:

     artifacts:
        npmPackages:
        - repository: 'https://LOCATION-npm.pkg.dev/PROJECT-ID/REPOSITORY_NAME'
          packagePath: 'PACKAGE_PATH'
    

    替换以下值:

    • LOCATION位置 在 Artifact Registry 中配置代码库
    • PROJECT_ID:需要配置的 Google Cloud 项目的 ID 包含您的 Artifact Registry 代码库
    • REPOSITORY_NAME:npm 代码库的名称 Artifact Registry
    • PACKAGE_PATH:本��目录的路径 包含要上传到 Artifact Registry 的 npm 软件包。周三 建议使用绝对路径您的PACKAGE_PATH 值可以是 .,以使用当前工作目录,但该字段不能 可以省略或留空。此目录必须包含 package.json 文件。
  6. 可选:启用出处生成功能

    Cloud Build 可以生成 软件制品 (SLSA) 的供应链级别 build 出处元数据,以帮助保护持续集成流水线。

    要启用出处生成功能,请将 requestedVerifyOption: VERIFIED 添加到配置文件的 options 部分。

  7. 启动构建手动使用构建触发器

    构建完成后,您可以查看代码库详情 在 Artifact Registry 中构建

    您还可以查看 build 出处元数据验证出处

在多个 node 版本上运行测试

有时,您需要确保项目可以在多个版本的 node 中运行。您可以创建和配置 Cloud Build 触发器,以便:

  • 在构建配置文件中,将 node 版本指定为替代变量
  • 对于要为其构建应用的每个 node 版本创建一个触发器。
  • 在每个触发器的设置中,使用替代变量值字段指示该触发器对应的 node 版本。

以下步骤介绍了如何使用特定于触发器的替代变量来指定 node 版本:

  1. 在您的代码库根目录中,添加一个构建配置文件,用于指定 node 版本作为替代变量。在下面的示例 build 中 配置文件中,$_NODE_VERSION用户定义的替代变量

     steps:
     - name: 'node:$_NODE_VERSION'
       entrypoint: 'npm'
       args: ['install']
     - name: 'node:$_NODE_VERSION'
       entrypoint: 'npm'
       args: ['test']
    
  2. 为您要根据其进行构建的每个 node 版本创建一个构建触发器 :

    1. 在 Google Cloud 控制台中打开触发器页面:

      打开“触发器”页面

    2. 从页面顶部的项目选择器下拉菜单中选择您的项目。

    3. 点击打开

    4. 点击创建触发器

      创建触发器页面上,输入以下设置:

      1. 输入触发器的名称。

      2. 选择用于启动触发器的代码库事件。

      3. 选择包含源代码和构建配置文件的代码库。

      4. 指定用于启动触发器的分支名称或标记名称的正则表达式。

      5. 配置:选择您之前创建的构建配置文件。

      6. 替代变量下,点击添加变量

        1. 变量下,指定您使用的 node 版本变量 ,然后在下指定版本 node 的布局。例如 _NODE_VERSION12
    5. 点击创建以保存您的构建触发器。

您可以使用这些触发器在您之前创建的 node 版本上构建代码, 。

后续步骤