本页面介绍了如何使用 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
构建步骤中使用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 仓库:artifacts: npmPackages: - repository: 'https://LOCATION-npm.pkg.dev/PROJECT-ID/REPOSITORY_NAME' packagePath: 'PACKAGE_PATH'
替换以下值:
- LOCATION:位置 在 Artifact Registry 中配置代码库
- PROJECT_ID:包含 Artifact Registry 制品库的 Google Cloud 项目的 ID。
- 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
版本作为替代变量。在以下构建配置文件示例中,$_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
版本上构建代码,
。