Organízate con las colecciones
Guarda y clasifica el contenido según tus preferencias.
En esta página se explica cómo usar Cloud Build para compilar y probar Node.jsaplicaciones, almacenar artefactos compilados en un repositorio npm de Artifact Registry y generar información de procedencia de compilación.
Cloud Build te permite usar cualquier imagen de contenedor disponible públicamente para ejecutar tus tareas. La imagen pública node de Docker Hub
viene preinstalada con la herramienta npm. Puedes configurar Cloud Build para compilar tu proyecto Node.js con esta herramienta.
Antes de empezar
En las instrucciones de esta página se da por hecho que conoces Node.js. Además:
Tener un repositorio npm en Artifact Registry. Si no tienes ninguno, crea un repositorio.
Para ejecutar los comandos gcloud de esta página, instala la CLI de Google Cloud.
Desarrollar con npm
Para ejecutar tus tareas en la imagen node de Docker Hub, especifica la URL de la imagen en el campo name del archivo de configuración de Cloud Build.
Cloud Build inicia el contenedor especificado en el campo name
con el punto de entrada predeterminado de la imagen. Para anular el punto de entrada predeterminado y definir cómo se debe ejecutar el paso de compilación cuando se invoca, añade un campo entrypoint en el paso de compilación. La imagen node de Docker Hub viene con la herramienta npm preinstalada. Especifica las herramientas en el campo entrypoint para
invocarlas como punto de entrada del paso de compilación.
En el siguiente ejemplo de archivo de configuración de compilación:
El campo name especifica que Cloud Build usa la imagen node de Docker Hub para ejecutar tu tarea. Cuando especifiques la node
imagen, puedes omitir la versión del nodo para usar la :latest de forma predeterminada o
especificar una versión del nodo
para usar una versión específica. Por ejemplo, name: node usará la versión más reciente de Node y name: node:12 usará node:12.
El campo entrypoint especifica que se usa la herramienta npm cuando se invoca la imagen node.
steps:
- name: 'node'
entrypoint: 'npm'
Configurar compilaciones de Node.js
En el directorio raíz de tu proyecto, crea un archivo de configuración llamado cloudbuild.yaml.
Instala las dependencias: antes de compilar tu aplicación, debes asegurarte de que todas las dependencias de tu proyecto estén instaladas desde npm. Puedes instalar dependencias con el comando install en el paso de compilación npm. El campo args de un paso de compilación toma una lista de argumentos y los pasa a la imagen a la que hace referencia el campo name. En el archivo de configuración de compilación, añade install al campo args para invocar el comando install:
Añadir pruebas: si has definido una secuencia de comandos test en tu package.json, puedes configurar Cloud Build para que ejecute la secuencia de comandos añadiendo test al campo args:
Ejecutar comandos personalizados: si tu package.json contiene algún comando personalizado, puedes configurar Cloud Build para que lo ejecute. En el campo args, añade run como primer argumento seguido del nombre del comando personalizado. El siguiente archivo de configuración de compilación tiene argumentos para ejecutar un comando personalizado llamado build:
LOCATION: la ubicación
de tu repositorio en Artifact Registry.
PROJECT_ID: el ID del Google Cloud proyecto que
contiene tu repositorio de Artifact Registry.
REPOSITORY_NAME: el nombre de tu repositorio npm en Artifact Registry.
PACKAGE_PATH: la ruta del directorio local que contiene el paquete npm que quieres subir a Artifact Registry. Te recomendamos que uses una ruta absoluta. El valor de PACKAGE_PATH
puede ser . para usar el directorio de trabajo actual, pero el campo no se puede omitir ni dejar vacío. Este directorio debe contener un archivo package.json.
A veces es necesario asegurarse de que tu proyecto funcione en varias versiones de node. Puedes crear y configurar activadores de Cloud Build para que:
En el archivo de configuración de compilación, especifica la versión node como una variable de sustitución.
Crea un activador para cada versión de node con la que quieras compilar tu aplicación.
En cada una de las configuraciones de los activadores, utilice el campo de valor de la variable de sustitución para indicar la versión de node de ese activador.
En los siguientes pasos se explica cómo especificar la versión de node mediante variables de sustitución específicas de los activadores:
En la raíz de tu repositorio, añade un archivo de configuración de compilación que especifique la nodeversión como variable de sustitución. En el siguiente ejemplo de archivo de configuración de compilación, $_NODE_VERSION es una variable de sustitución definida por el usuario:
Selecciona tu proyecto en el menú desplegable del selector de proyectos situado en la parte superior de la página.
Haz clic en Abrir.
Haz clic en Crear activador.
En la página Crear activador, introduzca los siguientes ajustes:
Escribe un nombre para el activador.
Selecciona el evento del repositorio para iniciar el activador.
Selecciona el repositorio que contiene el código fuente y el archivo de configuración de compilación.
Especifica la expresión regular del nombre de la rama o etiqueta que iniciará el activador.
Configuración: elige el archivo de configuración de compilación que creaste anteriormente.
En Variables de sustitución, haga clic en Añadir variable.
En Variable (Variable), especifica la variable de versión node que has usado en el archivo de configuración de compilación y, en Value (Valor), especifica la versión de node. Por ejemplo, _NODE_VERSION y 12.
Haz clic en Crear para guardar el activador de compilación.
Puedes usar estos activadores para compilar tu código en la versión de node que hayas especificado en el activador.
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Es difícil de entender","hardToUnderstand","thumb-down"],["La información o el código de muestra no son correctos","incorrectInformationOrSampleCode","thumb-down"],["Me faltan las muestras o la información que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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)."]]