Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Nesta página, explicamos como usar o Cloud Build para criar e testar aplicativos Node.js, armazenar artefatos criados em um repositório npm no Artifact Registry e
gerar informações de procedência do build.
O Cloud Build permite que você use qualquer imagem de contêiner disponível publicamente para executar suas tarefas. A imagem pública
node do Docker Hub
vem pré-instalada com a ferramenta npm. É possível configurar o Cloud Build
para criar seu projeto Node.js com essa ferramenta.
Antes de começar
Nas instruções desta página, pressupomos que você está familiarizado com Node.js. Além disso:
Ter um repositório do npm no Artifact Registry. Se você não tiver um, crie um repositório.
Para executar os comandos gcloud nesta página, instale a
Google Cloud CLI.
Como criar com npm
Para executar suas tarefas na imagem node do Docker Hub, especifique o URL da imagem no campo name no arquivo de configuração do Cloud Build.
O Cloud Build inicia o contêiner especificado no campo name usando o ponto de entrada padrão da imagem. Para substituir o ponto de entrada padrão e definir como executar a etapa de build quando ela for invocada, adicione um campo entrypoint na etapa de build. A imagem node no Docker Hub vem
pré-instalada com a ferramenta npm. Especifique as ferramentas no campo entrypoint para
invocá-las como o ponto de entrada da etapa de build.
No seguinte arquivo de configuração de build de exemplo:
O campo name especifica que a imagem node do Docker Hub é usada pelo Cloud Build para executar a tarefa. Quando você especificar a imagem node, omita a versão do nó para usar :latest como padrão ou especifique uma versão do nó para usar uma versão específica. Por exemplo, name: node usará a versão
mais recente do nó, e name: node:12 usará node:12.
O campo entrypoint especifica que a ferramenta npm é usada
quando a imagem node é invocada.
steps:
- name: 'node'
entrypoint: 'npm'
Como configurar builds Node.js
No diretório raiz do projeto, crie um arquivo de configuração chamado cloudbuild.yaml.
Instalar dependências: antes de criar o aplicativo, verifique se todas as dependências do projeto estão instaladas a partir de npm. É
possível instalar dependências usando o comando install na etapa de build
npm. O campo args de uma etapa de build recebe uma lista de argumentos e os transmite
para a imagem referenciada pelo campo de nome. No arquivo de configuração de build,
adicione install ao campo args para invocar o comando install:
Executar comandos personalizados: se package.json tiver comandos personalizados, configure o Cloud Build para executar esse comando. No campo args, adicione run como o primeiro argumento seguido pelo nome do comando personalizado. O arquivo de configuração de build a seguir tem argumentos para executar um comando
personalizado chamado build:
LOCATION: o local
do repositório no Artifact Registry.
PROJECT_ID: o ID do projeto Google Cloud que
contém o repositório do Artifact Registry.
REPOSITORY_NAME: o nome do repositório npm no
Artifact Registry.
PACKAGE_PATH: o caminho do diretório local
que contém o pacote npm que você quer enviar ao Artifact Registry. Recomendamos
usar um caminho absoluto. O valor PACKAGE_PATH
pode ser . para usar o diretório de trabalho atual, mas o campo não pode
ser omitido ou deixado em branco. Esse diretório precisa conter um arquivo package.json.
Às vezes, é necessário garantir que o projeto funcione em várias versões de node. É possível criar e configurar gatilhos do Cloud Build de maneira que:
No arquivo de configuração de build, especifique a versão node como uma variável de substituição.
Crie um gatilho para cada versão de node usada como referência durante a compilação no aplicativo.
Em cada uma das configurações do gatilho, use o campo de valor da variável de substituição para indicar a versão de node para o gatilho.
As etapas a seguir explicam como especificar a versão de node usando variáveis de substituição específicas do gatilho:
Na raiz do repositório, adicione um arquivo de configuração de build, que especifica a
versão node como uma variável de substituição. No exemplo de arquivo de configuração de
build abaixo, $_NODE_VERSION é uma variável de substituição definida pelo usuário:
Selecione o projeto no menu suspenso do seletor de projetos na parte superior da página.
Clique em Abrir.
Clique em Criar gatilho.
Na página Criar gatilho, especifique as seguintes configurações:
Insira um nome para o gatilho.
Selecione o evento de repositório para iniciar o gatilho.
Selecione o repositório que contém o código-fonte e o arquivo de configuração de build.
Especifique o regex do nome da ramificação ou da tag que iniciará o gatilho.
Configuração: escolha o arquivo de configuração da compilação que você criou
anteriormente.
Em Variáveis de substituição, clique em Adicionar variável.
Em Variável, especifique a variável de versão node usada
no arquivo de configuração de build e, em Valor, especifique a versão
do node. Por exemplo, _NODE_VERSION e 12.
Clique em Criar para salvar o gatilho de compilação.
Use esses gatilhos para criar o código na versão de node que você
especificou no gatilho.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-04 UTC."],[[["\u003cp\u003eCloud Build can be used to build and test Node.js applications using the public \u003ccode\u003enode\u003c/code\u003e image from Docker Hub, which comes pre-installed with the \u003ccode\u003enpm\u003c/code\u003e tool.\u003c/p\u003e\n"],["\u003cp\u003eYou can configure Cloud Build to install dependencies, run tests, and execute custom commands defined in your \u003ccode\u003epackage.json\u003c/code\u003e file within the \u003ccode\u003enode\u003c/code\u003e environment.\u003c/p\u003e\n"],["\u003cp\u003eBuilt artifacts can be uploaded to an npm repository in Artifact Registry by specifying the repository details and package path in your \u003ccode\u003ecloudbuild.yaml\u003c/code\u003e configuration file.\u003c/p\u003e\n"],["\u003cp\u003eCloud Build allows for generating verifiable SLSA build provenance metadata to enhance the security of your continuous integration pipeline.\u003c/p\u003e\n"],["\u003cp\u003eYou can run tests on multiple Node.js versions by using substitution variables in the build config file and creating separate Cloud Build triggers for each version.\u003c/p\u003e\n"]]],[],null,["# Build and test Node.js applications\n\nThis page explains how to use Cloud Build to build and test `Node.js`\napplications, store built artifacts in an npm repository in Artifact Registry, and\ngenerate build provenance information.\n\nCloud Build enables you to use any publicly available container image\nto execute your tasks. The public\n[`node` image from Docker Hub](https://hub.docker.com/_/node/)\ncomes preinstalled with the `npm` tool. You can configure Cloud Build\nto build your `Node.js` project with this tool.\n\nBefore you begin\n----------------\n\nThe instructions on this page assume that you are familiar with `Node.js`. In\naddition:\n\n- Be familiar with [npm](https://docs.npmjs.com/about-npm).\n- Have your `Node.js` project handy, including `package.json` and `test.js` files.\n- Make sure your `package.json` file includes a `start` script and a `test` script.\n- Be familiar with [how to write a Cloud Build configuration file](/build/docs/build-config).\n- Have an npm repository in Artifact Registry. If you don't have one, [create a new repository](/artifact-registry/docs/repositories/create-repos).\n- To run the `gcloud` commands in this page, install the [Google Cloud CLI](/sdk).\n\nBuilding with `npm`\n-------------------\n\nTo execute your tasks in the `node` image from Docker Hub, specify the image URL\nin the `name` field in the [Cloud Build config file](/build/docs/build-config-file-schema).\nCloud Build starts the container specified in the `name`\nfield using the image's default entrypoint. To override the default entrypoint\nand define how the build step should be run when it is invoked, add an\n`entrypoint` field in your build step. The `node` image in Docker Hub comes\npreinstalled with the `npm` tool. Specify the tools in the `entrypoint` field to\ninvoke them as the entrypoint of your build step.\n\nIn the following example build config file:\n\n- The `name` field specifies that the `node` image from Docker Hub is used by Cloud Build to execute your task. When you're specifying the `node` image, you can either omit the node version to default to `:latest`, or specify a [node version](https://hub.docker.com/_/node/) to use a specific version. For example, `name: node` will use the latest version of node, and `name: node:12` will use `node:12`.\n- The `entrypoint` field specifies that the `npm` tool is used\n when the `node` image is invoked.\n\n steps:\n - name: 'node'\n entrypoint: 'npm'\n\nConfiguring `Node.js` builds\n----------------------------\n\n1. In your project root directory, create a\n config file named `cloudbuild.yaml`.\n\n2. **Install dependencies** : Before you can build your application, you must\n ensure that all of your project's dependencies are installed from `npm`. You\n can install dependencies using the `install` command within the `npm` build\n step. The `args` field of a build step takes a list of arguments and passes\n them to the image referenced by the name field. In your build config file,\n add `install` to the `args` field to invoke the `install` command:\n\n steps:\n - name: 'node'\n entrypoint: 'npm'\n args: ['install']\n\n3. **Add tests** : If you've defined a `test` script in your `package.json`, you\n can configure Cloud Build to run the script by adding `test` to the\n `args` field:\n\n steps:\n - name: 'node'\n entrypoint: 'npm'\n args: ['install']\n - name: 'node'\n entrypoint: 'npm'\n args: ['test']\n\n4. **Run custom commands** : If your `package.json` contains any custom commands,\n you can configure Cloud Build to run that command. In the `args`\n field, add `run` as the first argument followed by the name of the custom\n command. The following build config file has arguments to run a custom\n command called `build`:\n\n steps:\n - name: 'node'\n entrypoint: 'npm'\n args: ['install']\n - name: 'node'\n entrypoint: 'npm'\n args: ['test']\n - name: 'node'\n entrypoint: 'npm'\n args: ['run', 'build']\n\n5. **Upload to Artifact Registry**:\n\n In your config file, add the `npmPackages` field and specify your npm\n repository in Artifact Registry: \n\n artifacts:\n npmPackages:\n - repository: 'https://\u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e-npm.pkg.dev/\u003cvar translate=\"no\"\u003ePROJECT-ID\u003c/var\u003e/\u003cvar translate=\"no\"\u003eREPOSITORY_NAME\u003c/var\u003e'\n packagePath: '\u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-nx\"\u003ePACKAGE_PATH\u003c/span\u003e\u003c/var\u003e'\n\n Replace the following values:\n - \u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e: the [location](/artifact-registry/docs/repo-locations) for your repository in Artifact Registry.\n - \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: the ID of the Google Cloud project that contains your Artifact Registry repository.\n - \u003cvar translate=\"no\"\u003eREPOSITORY_NAME\u003c/var\u003e: the name of your npm repository in Artifact Registry.\n - \u003cvar translate=\"no\"\u003ePACKAGE_PATH\u003c/var\u003e: the path for the local directory containing the npm package that you want to upload to Artifact Registry. We recommend using an absolute path. Your \u003cvar translate=\"no\"\u003ePACKAGE_PATH\u003c/var\u003e value can be `.` to use the current working directory, but the field cannot be omitted or left empty. This directory must contain a `package.json` file.\n6. **Optional: Enable provenance generation**\n\n Cloud Build can generate verifiable\n [Supply chain Levels for Software Artifacts (SLSA)](https://slsa.dev/) build\n provenance metadata to help secure your continuous integration pipeline.\n\n To enable provenance generation, add\n [`requestedVerifyOption: VERIFIED`](/build/docs/build-config-file-schema#options)\n to the `options` section in your config file.\n7. **Start your build** : [manually](/build/docs/running-builds/start-build-manually) or\n [using build triggers](/build/docs/automating-builds/create-manage-triggers).\n\n Once your build completes, you can [view repository details](/artifact-registry/docs/repositories/list-repos)\n in Artifact Registry.\n\n You can also [view build provenance metadata](/build/docs/securing-builds/generate-validate-build-provenance#view) and [validate provenance](/build/docs/securing-builds/generate-validate-build-provenance#validate_provenance).\n\nRunning tests on multiple `node` versions\n-----------------------------------------\n\nSometimes it is necessary to ensure that your project works across multiple\nversions of `node`. You can create and configure\n[Cloud Build triggers](/build/docs/running-builds/create-manage-triggers)\nsuch that:\n\n- In your build config file, specify the `node` version as a [substitution variable](/build/docs/configuring-builds/substitute-variable-values).\n- Create one trigger for each version of `node` against which you want to build your application.\n- In each of the trigger settings, use the substitution variable value field to indicate the version of the `node` for that trigger.\n\nThe following steps explain how to specify the `node` version using trigger-specific\nsubstitution variables:\n\n1. In your repository root, add a build config file, which specifies the\n `node`version as a substitution variable. In the following example build\n config file, `$_NODE_VERSION` is a [user-defined substitution variable](/build/docs/configuring-builds/substitute-variable-values#using_user-defined_substitutions):\n\n steps:\n - name: 'node:$_NODE_VERSION'\n entrypoint: 'npm'\n args: ['install']\n - name: 'node:$_NODE_VERSION'\n entrypoint: 'npm'\n args: ['test']\n\n2. For each version of `node` you want to build against, create a build trigger\n using the following steps:\n\n 1. Open the **Triggers** page in the Google Cloud console:\n\n [Open Triggers page](https://console.cloud.google.com/cloud-build/triggers)\n 2. Select your project from the project selector drop-down menu at the top of\n the page.\n\n 3. Click **Open**.\n\n 4. Click **Create trigger**.\n\n On the **Create trigger** page, enter the following settings:\n 1. Enter a name for your trigger.\n\n 2. Select the repository event to start your trigger.\n\n 3. Select the repository that contains your source code and build\n config file.\n\n 4. Specify the regex for the branch or tag name that will start your\n trigger.\n\n 5. **Configuration**: Choose the build config file you created\n previously.\n\n 6. Under **Substitution variables** , click **Add variable**.\n\n 1. Under **Variable** , specify the `node` version variable you used in your build config file, and under **Value** specify the version of the `node`. For example, `_NODE_VERSION` and `12`.\n 5. Click **Create** to save your build trigger.\n\nYou can use these triggers to build your code on the version of `node` you\nspecified in the trigger.\n\nWhat's next\n-----------\n\n- Learn how to [view build results](/build/docs/view-build-results).\n- Learn how to [safeguard builds](/software-supply-chain-security/docs/safeguard-builds).\n- Learn how to [build container images](/build/docs/building/build-containers).\n- Learn how to [build Go applications](/build/docs/building/build-go).\n- Learn how to [perform blue/green deployments on Compute Engine](/build/docs/deploying-builds/deploy-compute-engine).\n- Learn how to [troubleshoot build errors](/build/docs/troubleshooting)."]]