本页面介绍了如何使用 Cloud Build 构建和测试 Node.js
将构建的工件存储在 Artifact Registry 的 npm 代码库中,以及
生成构建出处信息。
通过 Cloud Build,您可以使用任何公开可用的容器映像来执行任务。公众
Docker Hub 中的 node
映像
预装了 npm
工具。你可以配置 Cloud Build
使用此工具构建 Node.js
项目。
准备工作
本页面的说明假定您熟悉 Node.js
。此外:
- 熟悉 npm。
- 准备好您的
Node.js
项目,包括package.json
和test.js
文件。 - 确保您的
package.json
文件包含start
脚本和test
脚本。 - 熟悉如何编写 Cloud Build 配置文件。
- 在 Artifact Registry 中有一个 npm 代码库。如果没有,请创建新的代码库。
- 如需运行此页面中的
gcloud
命令,请安装 Google Cloud CLI。
使用 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
构建
在项目根目录中,创建一个名为
cloudbuild.yaml
的配置文件。安装依赖项:在构建应用之前, 请确保从
npm
安装项目的所有依赖项。您 可以在npm
build 中使用install
命令安装依赖项 操作。构建步骤的args
字段采用参数列表并传递 传递给 name 字段引用的图片。在构建配置文件中 将install
添加到args
字段以调用install
命令:steps: - name: 'node' entrypoint: 'npm' args: ['install']
添加测试:如果您已经在
package.json
中定义了test
脚本,则可以将test
添加到args
字段,从而将 Cloud Build 配置为运行该脚本:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test']
运行自定义命令:如果您的
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']
上传到 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
文件。
可选:启用出处生成功能
Cloud Build 可以生成 软件制品 (SLSA) 的供应链级别 build 出处元数据,以帮助保护持续集成流水线。
要启用出处生成功能,请将
requestedVerifyOption: VERIFIED
添加到配置文件的options
部分。-
构建完成后,您可以查看代码库详情 在 Artifact Registry 中构建
您还可以查看 build 出处元数据和验证出处。
在多个 node
版本上运行测试
有时,您需要确保项目可以在多个版本的 node
中运行。您可以创建和配置 Cloud Build 触发器,以便:
- 在构建配置文件中,将
node
版本指定为替代变量。 - 对于要为其构建应用的每个
node
版本创建一个触发器。 - 在每个触发器的设置中,使用替代变量值字段指示该触发器对应的
node
版本。
以下步骤介绍了如何使用特定于触发器的替代变量来指定 node
版本:
在您的代码库根目录中,添加一个构建配置文件,用于指定
node
版本作为替代变量。在下面的示例 build 中 配置文件中,$_NODE_VERSION
是用户定义的替代变量:steps: - name: 'node:$_NODE_VERSION' entrypoint: 'npm' args: ['install'] - name: 'node:$_NODE_VERSION' entrypoint: 'npm' args: ['test']
为您要根据其进行构建的每个
node
版本创建一个构建触发器 :在 Google Cloud 控制台中打开触发器页面:
从页面顶部的项目选择器下拉菜单中选择您的项目。
点击打开。
点击创建触发器。
在创建触发器页面上,输入以下设置:
输入触发器的名称。
选择用于启动触发器的代码库事件。
选择包含源代码和构建配置文件的代码库。
指定用于启动触发器的分支名称或标记名称的正则表达式。
配置:选择您之前创建的构建配置文件。
在替代变量下,点击添加变量。
- 在变量下,指定您使用的
node
版本变量 ,然后在值下指定版本node
的布局。例如_NODE_VERSION
和12
。
- 在变量下,指定您使用的
点击创建以保存您的构建触发器。
您可以使用这些触发器在您之前创建的 node
版本上构建代码,
。