Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Cette page explique comment utiliser Cloud Build pour compiler et tester des applications Node.js, stocker des artefacts créés dans un dépôt npm dans Artifact Registry et générer des informations sur la provenance de la compilation.
Cloud Build permet d'exécuter vos tâches à l'aide de n'importe quelle image de conteneur
disponible publiquement. L'image node publique de Docker Hub est fournie avec l'outil npm préinstallé. Vous pouvez configurer Cloud Build pour compiler votre projet Node.js à l'aide de cet outil.
Avant de commencer
Les instructions de cette page partent du principe que vous connaissez bien Node.js. En outre :
disposer d'un dépôt npm dans Artifact Registry ; Si vous n'en avez pas, créez un dépôt.
Pour exécuter les commandes gcloud sur cette page, installez Google Cloud CLI.
Compiler avec npm
Pour exécuter vos tâches dans l'image node de Docker Hub, spécifiez l'URL de l'image dans le champ name du fichier de configuration Cloud Build.
Cloud Build démarre le conteneur spécifié dans le champ name en utilisant le point d'entrée par défaut de l'image. Pour remplacer ce point d'entrée par défaut et définir comment exécuter l'étape de compilation lorsqu'elle est appelée, ajoutez un champ entrypoint à l'étape de compilation. L'image node de Docker Hub est fournie avec l'outil npm préinstallé. Spécifiez les outils dans le champ entrypoint afin de pouvoir les appeler en tant que points d'entrée de votre étape de compilation.
Dans l'exemple de fichier de configuration de compilation suivant :
Le champ name indique que l'image node de Docker Hub est utilisée par Cloud Build pour exécuter votre tâche. Lorsque vous spécifiez l'image node, vous pouvez soit omettre de renseigner la version de nœud afin d'utiliser la version par défaut :latest, soit indiquer une version de nœud afin d'utiliser cette version spécifique. Par exemple, name: node utilisera la dernière version de node, tandis que name: node:12 utilisera la version node:12.
Le champ entrypoint indique que l'outil npm est utilisé lorsque l'image node est appelée.
steps:
- name: 'node'
entrypoint: 'npm'
Configurer les compilations Node.js
Dans le répertoire racine de votre projet, créez un fichier de configuration nommé cloudbuild.yaml.
Installer les dépendances: avant de pouvoir compiler votre application, vous devez vous assurer que toutes les dépendances de votre projet sont installées à partir de npm. Vous pouvez installer des dépendances à l'aide de la commande install dans l'étape de compilation npm. Le champ args d'une étape de compilation prend une liste d'arguments et la transmet à l'image à laquelle le champ de nom fait référence. Dans votre fichier de configuration de compilation, ajoutez install au champ args pour appeler la commande install:
Ajouter des tests : si vous avez défini un script de test dans votre fichier package.json, vous pouvez configurer Cloud Build pour qu'il exécute le script en ajoutant l'argument test au champ args :
Exécuter des commandes personnalisées : si votre fichier package.json contient des commandes personnalisées, vous pouvez configurer Cloud Build pour qu'il exécute ces commandes. Dans le champ args, ajoutez run en tant que premier argument suivi du nom de la commande personnalisée. Le fichier de configuration de compilation suivant contient des arguments permettant d'exécuter une commande personnalisée appelée build:
LOCATION: emplacement de votre dépôt dans Artifact Registry.
PROJECT_ID: ID du Google Cloud projet contenant votre dépôt Artifact Registry.
REPOSITORY_NAME: nom de votre dépôt npm dans Artifact Registry.
PACKAGE_PATH: chemin d'accès au répertoire local contenant le package npm que vous souhaitez importer dans Artifact Registry. Nous vous recommandons d'utiliser un chemin d'accès absolu. La valeur PACKAGE_PATH peut être . pour utiliser le répertoire de travail actuel, mais le champ ne peut pas être omis ni laissé vide. Ce répertoire doit contenir un fichier package.json.
Facultatif: Activer la génération de provenance
Cloud Build peut générer des métadonnées de provenance de compilation SLSA (Supply chain Levels for Software Artifacts) vérifiables pour vous aider à sécuriser votre pipeline d'intégration continue.
Pour activer la génération de provenance, ajoutez requestedVerifyOption: VERIFIED à la section options de votre fichier de configuration.
Il est parfois nécessaire de s'assurer que votre projet fonctionne avec plusieurs versions de node. Vous pouvez créer et configurer des déclencheurs Cloud Build dotés des caractéristiques suivantes :
Dans votre fichier de configuration de compilation, spécifiez la version de node en tant que variable de substitution.
Créez un déclencheur pour chaque version de node avec laquelle vous souhaitez compiler votre application.
Dans les paramètres de chaque déclencheur, utilisez le champ de valeur de la variable de substitution pour indiquer la version de node à utiliser pour ce déclencheur.
Les étapes suivantes expliquent comment spécifier la version de node à l'aide de variables de substitution spécifiques au déclencheur :
Dans la racine de votre dépôt, ajoutez un fichier de configuration de compilation qui spécifie la version de node en tant que variable de substitution. Dans l'exemple de fichier de configuration de compilation suivant, $_NODE_VERSION est une variable de substitution définie par l'utilisateur:
Pour chaque version de node avec laquelle vous souhaitez effectuer une compilation, créez un déclencheur de compilation en suivant les étapes ci-dessous:
Ouvrez la page Déclencheurs dans la console Google Cloud :
Sélectionnez votre projet dans le menu déroulant du sélecteur de projet, en haut
de la page.
Cliquez sur Ouvrir.
Cliquez sur Créer un déclencheur.
Sur la page Créer un déclencheur, saisissez les paramètres suivants :
Nommez votre déclencheur.
Sélectionnez l'événement de dépôt pour démarrer le déclencheur.
Sélectionnez le dépôt contenant le code source et le fichier de configuration
de compilation.
Indiquez l'expression régulière correspondant au nom de la branche ou du tag qui démarrera votre
déclencheur.
Configuration : sélectionnez le fichier de configuration de compilation créé précédemment.
Sous Variables de substitution, cliquez sur Ajouter une variable.
Dans Variable, spécifiez la variable de version de node que vous avez utilisée dans le fichier de configuration de compilation et dans Valeur, renseignez la version de node. Par exemple, _NODE_VERSION et 12.
Cliquez sur Créer pour enregistrer le déclencheur de compilation.
Vous pouvez utiliser ces déclencheurs pour compiler votre code avec la version de node spécifiée dans le déclencheur.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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)."]]