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:
- Devi conoscere npm.
- Tieni a portata di mano il progetto
Node.js
, inclusi i filepackage.json
etest.js
. - Assicurati che il file
package.json
includa uno scriptstart
e uno scripttest
. - Devi conoscere come scrivere un file di configurazione di Cloud Build.
- Avere un repository npm in Artifact Registry. Se non ne hai uno, crea un nuovo repository.
- Per eseguire i comandi
gcloud
in questa pagina, installa Google Cloud CLI.
Creare 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 tuo passaggio di compilazione.
Nel seguente esempio di file di configurazione della build:
- Il campo
name
specifica che l'immaginenode
di Docker Hub viene utilizzata da Cloud Build per eseguire l'attività. Quando specifichi l'immaginenode
, puoi omettere la versione del nodo per impostare come predefinita:latest
oppure specificare una versione del nodo per utilizzare una versione specifica. Ad esempio,name: node
utilizzerà la versione più recente di Node ename: node:12
utilizzerànode:12
. Il campo
entrypoint
specifica che lo strumentonpm
viene utilizzato quando viene richiamata l'immaginenode
.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 comandoinstall
nel passaggio di compilazionenpm
. Il campoargs
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, aggiungiinstall
al campoargs
per richiamare il comandoinstall
:steps: - name: 'node' entrypoint: 'npm' args: ['install']
Aggiungi test: se hai definito uno script
test
inpackage.json
, puoi configurare Cloud Build per eseguirlo aggiungendotest
al campoargs
:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test']
Esegui comandi personalizzati: se
package.json
contiene comandi personalizzati, puoi configurare Cloud Build in modo che li esegua. Nel campoargs
, aggiungirun
come primo argomento seguito dal nome del comando personalizzato. Il seguente file di configurazione di compilazione contiene gli argomenti per eseguire un comando personalizzato chiamatobuild
:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test'] - name: 'node' entrypoint: 'npm' args: ['run', 'build']
Carica in Artifact Registry:
Nel file di configurazione, aggiungi il campo
npmPackages
e specifica il repository npm in Artifact Registry:artifacts: npmPackages: - repository: 'https://LOCATION-npm.pkg.dev/PROJECT-ID/REPOSITORY_NAME' packagePath: 'PACKAGE_PATH'
Sostituisci i seguenti valori:
- 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 filepackage.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 sezioneoptions
del file di configurazione.Avvia la build: manualmente o utilizzando gli trigger di build.
Al termine della build, puoi visualizzare i dettagli del repository in Artifact Registry.
Puoi anche visualizzare i metadati dell'origine della compilazione e convalidare l'origine.
Eseguire test su più versioni di node
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 l'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:steps: - name: 'node:$_NODE_VERSION' entrypoint: 'npm' args: ['install'] - name: 'node:$_NODE_VERSION' entrypoint: 'npm' args: ['test']
Per ogni versione di
node
su cui vuoi eseguire la compilazione, crea un trigger di compilazione seguendo questi passaggi:Apri la pagina Trigger nella console Google Cloud:
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 dinode
. Ad esempio,_NODE_VERSION
e12
.
- In Variabile, specifica la variabile di versione
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.
Passaggi successivi
- Scopri come visualizzare i risultati della build.
- Scopri come proteggere le build.
- Scopri come creare immagini container.
- Scopri come creare applicazioni Go.
- Scopri come eseguire deployment blu/verdi su Compute Engine.
- Scopri come risolvere gli errori di compilazione.