Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Esta página explica como usar o Cloud Build para criar e testar Node.js
aplicações, armazenar artefactos criados num repositório npm no Artifact Registry e
gerar informações de proveniência da compilação.
O Cloud Build permite-lhe usar qualquer imagem de contentor disponível publicamente para executar as suas tarefas. A imagem pública
node do Docker Hub
é pré-instalada com a ferramenta npm. Pode configurar o Cloud Build
para criar o seu projeto Node.js com esta ferramenta.
Antes de começar
As instruções nesta página pressupõem que conhece o Node.js. Além
disso:
Para executar os comandos gcloud nesta página, instale a
CLI do Google Cloud.
Criar com o npm
Para executar as suas tarefas na imagem node do Docker Hub, especifique o URL da imagem no campo name no ficheiro de configuração do Cloud Build.
O Cloud Build inicia o contentor especificado no campo name
usando o ponto de entrada predefinido da imagem. Para substituir o ponto de entrada predefinido
e definir como o passo de compilação deve ser executado quando é invocado, adicione um campo entrypoint no passo de compilação. A imagem node no Docker Hub é pré-instalada com a ferramenta npm. Especifique as ferramentas no campo entrypoint para as invocar como o ponto de entrada do passo de compilação.
No seguinte exemplo de ficheiro de configuração de compilação:
O campo name especifica que a imagem node do Docker Hub é usada pelo Cloud Build para executar a sua tarefa. Quando especifica a nodeimagem, pode omitir a versão do nó para usar a predefinição :latest ou
especificar uma versão do nó
para usar uma versão específica. Por exemplo, name: node usa a versão mais recente do nó e name: node:12 usa node:12.
O campo entrypoint especifica que a ferramenta npm é usada quando a imagem node é invocada.
steps:
- name: 'node'
entrypoint: 'npm'
Configurar compilações Node.js
No diretório raiz do projeto, crie um ficheiro de configuração denominado cloudbuild.yaml.
Instale as dependências: antes de poder criar a sua aplicação, tem de se certificar de que todas as dependências do seu projeto estão instaladas a partir do npm. Pode instalar dependências através do comando install no passo de compilação npm. O campo args de um passo de compilação usa uma lista de argumentos e passa-os
para a imagem referenciada pelo campo de nome. No ficheiro de configuração de compilação,
adicione install ao campo args para invocar o comando install:
Adicione testes: se tiver definido um script test no seu package.json, pode configurar o Cloud Build para executar o script adicionando test ao campo args:
Executar comandos personalizados: se o seu package.json contiver comandos personalizados, pode configurar o Cloud Build para executar esse comando. No campo args, adicione run como o primeiro argumento, seguido do nome do comando personalizado. O ficheiro de configuração de compilação seguinte tem argumentos para executar um comando personalizado denominado build:
LOCATION: a localização
do seu repositório no Artifact Registry.
PROJECT_ID: o ID do projeto que contém o seu repositório do Artifact Registry. Google Cloud
REPOSITORY_NAME: o nome do seu repositório npm no
Artifact Registry.
PACKAGE_PATH: o caminho para o diretório local que contém o pacote npm que quer carregar para o Artifact Registry. Recomendamos que use um caminho absoluto. O valor pode ser . para usar o diretório de trabalho atual, mas o campo não pode ser omitido nem deixado vazio.PACKAGE_PATH Este diretório tem de conter um ficheiro package.json.
Por vezes, é necessário garantir que o seu projeto funciona em várias versões do node. Pode criar e configurar
triggers do Cloud Build
de modo que:
No ficheiro de configuração de compilação, especifique a versão node como uma variável de substituição.
Crie um acionador para cada versão de node com base na qual quer criar a sua aplicação.
Em cada uma das definições do acionador, use o campo de valor da variável de substituição para indicar a versão do node para esse acionador.
Os passos seguintes explicam como especificar a versão node através de variáveis de substituição específicas do acionador:
Na raiz do repositório, adicione um ficheiro de configuração da compilação que especifique a
nodeversão como uma variável de substituição. No ficheiro de configuração de compilação do exemplo seguinte, $_NODE_VERSION é uma variável de substituição definida pelo utilizador:
Selecione o seu projeto no menu pendente do seletor de projetos na parte superior
da página.
Clique em Abrir.
Clique em Criar acionador.
Na página Criar acionador, introduza as seguintes definições:
Introduza um nome para o acionador.
Selecione o evento do repositório para iniciar o acionador.
Selecione o repositório que contém o código fonte e o ficheiro de configuração de compilação.
Especifique a regex para o nome da ramificação ou da etiqueta que vai iniciar o
acionador.
Configuração: escolha o ficheiro de configuração de compilação que criou anteriormente.
Em Variáveis de substituição, clique em Adicionar variável.
Em Variável, especifique a variável de versão node que usou no ficheiro de configuração de compilação e, em Valor, especifique a versão node. Por exemplo, _NODE_VERSION e 12.
Clique em Criar para guardar o acionador de compilação.
Pode usar estes acionadores para criar o seu código na versão do node que especificou no acionador.
[[["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-08-21 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)."]]