Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Questa pagina spiega come utilizzare Cloud Build per creare e testare applicazioni Node.js
in Node.js, archiviare gli artefatti creati in un repository npm in Artifact Registry e
generare informazioni sull'origine della compilazione.
Cloud Build ti consente di utilizzare qualsiasi immagine container disponibile pubblicamente per eseguire le tue attività. L'immagine pubblica
node di Docker Hub
è preinstallata con lo strumento npm. Con questo strumento puoi configurare Cloud Build per compilare il tuo progetto Node.js.
Prima di iniziare
Le istruzioni riportate in questa pagina presuppongono che tu abbia dimestichezza con Node.js. Inoltre:
Per eseguire i comandi gcloud in questa pagina, installa
Google Cloud CLI.
Creazione con npm
Per eseguire le attività nell'immagine node di Docker Hub, specifica l'URL dell'immagine nel campo name del file di configurazione di Cloud Build.
Cloud Build avvia il contenitore specificato nel campo name
utilizzando l'entrypoint predefinito dell'immagine. Per eseguire l'override del punto di contatto predefinito
e definire la modalità di esecuzione del passaggio di compilazione quando viene richiamato, aggiungi un
campo entrypoint nel passaggio di compilazione. L'immagine node in Docker Hub è preinstallata con lo strumento npm. Specifica gli strumenti nel campo entrypoint per invocarli come punto di contatto del passaggio di compilazione.
Nel seguente esempio di file di configurazione della build:
Il campo name specifica che l'immagine node di Docker Hub viene utilizzata da Cloud Build per eseguire l'attività. Quando specifichi l'immagine node, puoi omettere la versione del nodo per impostare :latest come predefinita oppure specificare una versione del nodo per utilizzare una versione specifica. Ad esempio, name: node utilizzerà la versione più recente di Node e name: node:12 utilizzerà node:12.
Il campo entrypoint specifica che lo strumento npm viene utilizzato quando viene richiamata l'immagine node.
steps:
- name: 'node'
entrypoint: 'npm'
Configurazione delle build di Node.js
Nella directory principale del progetto, crea un
file di configurazione denominato cloudbuild.yaml.
Installa le dipendenze: prima di poter compilare l'applicazione, devi assicurarti che tutte le dipendenze del progetto siano installate da npm. Puoi installare le dipendenze utilizzando il comando install nel passaggio di compilazione npm. Il campo args di un passaggio di compilazione prende un elenco di argomenti e li passa all'immagine a cui fa riferimento il campo nome. Nel file di configurazione di compilazione,
aggiungi install al campo args per richiamare il comando install:
Aggiungi test: se hai definito uno script test in package.json, puoi configurare Cloud Build in modo da eseguire lo script aggiungendo test al campo args:
Esegui comandi personalizzati: se package.json contiene comandi personalizzati, puoi configurare Cloud Build in modo che li esegua. Nel campo args, aggiungi run come primo argomento seguito dal nome del comando personalizzato. Il seguente file di configurazione di compilazione contiene gli argomenti per eseguire un comando personalizzato chiamato build:
LOCATION: la posizione
del tuo repository in Artifact Registry.
PROJECT_ID: l'ID del progetto che contiene il repository Artifact Registry. Google Cloud
REPOSITORY_NAME: il nome del tuo repository npm in
Artifact Registry.
PACKAGE_PATH: il percorso della directory locale contenente il pacchetto npm che vuoi caricare in Artifact Registry. Ti consigliamo di utilizzare un percorso assoluto. Il valore PACKAGE_PATH
può essere . per utilizzare la directory di lavoro corrente, ma il campo non può essere omesso o lasciato vuoto. Questa directory deve contenere un file package.json.
(Facoltativo) Attivare la generazione della provenienza
Cloud Build può generare metadati verificabili per l'origine della compilazione Supply Chain Levels for Software Artifacts (SLSA) per contribuire a proteggere la pipeline di integrazione continua.
Per attivare la generazione dell'origine, aggiungi
requestedVerifyOption: VERIFIED
alla sezione options del file di configurazione.
A volte è necessario assicurarsi che il progetto funzioni su più versioni di node. Puoi creare e configurare
trigger di Cloud Build
in modo che:
Nel file di configurazione di compilazione, specifica la versione node come
variabile di sostituzione.
Crea un attivatore per ogni versione di node su cui vuoi sviluppare la tua applicazione.
In ogni impostazione dell'attivatore, utilizza il campo del valore della variabile di sostituzione per indicare la versione del node per quell'attivatore.
I passaggi riportati di seguito spiegano come specificare la versione node utilizzando le variabili di sostituzione specifiche per l'attivatore:
Nella directory principale del repository, aggiungi un file di configurazione di compilazione che specifica la versione node come variabile di sostituzione. Nell'esempio seguente del file di configurazione di compilazione, $_NODE_VERSION è una variabile di sostituzione definita dall'utente:
Seleziona il progetto dal menu a discesa del selettore progetti nella parte superiore della pagina.
Fai clic su Apri.
Fai clic su Crea trigger.
Nella pagina Crea trigger, inserisci le seguenti impostazioni:
Inserisci un nome per l'attivatore.
Seleziona l'evento del repository per avviare l'attivatore.
Seleziona il repository contenente il codice sorgente e il file di configurazione della build.
Specifica la regex per il nome del ramo o del tag che attiverà l'attivatore.
Configurazione: scegli il file di configurazione della build creato
in precedenza.
In Variabili di sostituzione, fai clic su Aggiungi variabile.
In Variabile, specifica la variabile di versione node che hai utilizzato nel file di configurazione di compilazione e in Valore specifica la versione di node. Ad esempio, _NODE_VERSION e 12.
Fai clic su Crea per salvare il trigger di build.
Puoi utilizzare questi attivatori per compilare il codice sulla versione di node specificata nell'attivatore.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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)."]]