Cette page explique comment utiliser Cloud Build pour compiler et tester Node.js
applications, stocker les artefacts créés dans un dépôt npm dans Artifact Registry, et
générer des informations
de provenance de compilation.
Cloud Build permet d'exécuter vos tâches à l'aide de n'importe quelle image de conteneur
disponible publiquement. Le public
Image node
de Docker Hub
est préinstallé avec l'outil npm
. Vous pouvez configurer Cloud Build
pour créer votre projet Node.js
avec cet outil.
Avant de commencer
Les instructions de cette page partent du principe que vous connaissez bien Node.js
. En outre :
- Vous devez connaître npm.
- Ayez à portée de main votre projet
Node.js
, y comprispackage.json
ettest.js
. . - Assurez-vous que votre fichier
package.json
inclut un scriptstart
et un fichiertest
script. - Familiarisez-vous avec la rédaction d'un fichier de configuration Cloud Build.
- 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 la Google Cloud CLI ;
Créer 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
dans Docker Hub est fournie
préinstallé avec l'outil npm
. Spécifiez les outils dans le champ entrypoint
pour
appelez-les comme point d'entrée de votre étape de compilation.
Dans l'exemple de fichier de configuration de compilation suivant :
- Le champ
name
indique que l'imagenode
de Docker Hub est utilisée par Cloud Build pour exécuter votre tâche. Lorsque vous spécifieznode
vous pouvez omettre la version du nœud afin qu'elle soit définie par défaut sur:latest
, ou spécifiez une version de nœud pour utiliser une version spécifique. Par exemple,name: node
utilisera la dernière version du nœud, etname: node:12
utiliseranode:12
. Le champ
entrypoint
indique que l'outilnpm
est utilisé lorsque l'imagenode
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 des dépendances: avant de pouvoir créer votre application, vous devez assurez-vous que toutes les dépendances de votre projet sont installées à partir de
npm
. Toi Vous pouvez installer des dépendances à l'aide de la commandeinstall
dans le buildnpm
. étape. Le champargs
d'une étape de compilation prend une liste d'arguments et transmet à l'image référencée par le champ de nom. Dans votre fichier de configuration de compilation, Ajoutezinstall
au champargs
pour appeler la commandeinstall
:steps: - name: 'node' entrypoint: 'npm' args: ['install']
Ajouter des tests : si vous avez défini un script de
test
dans votre fichierpackage.json
, vous pouvez configurer Cloud Build pour qu'il exécute le script en ajoutant l'argumenttest
au champargs
:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test']
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 leargs
, ajoutezrun
comme premier argument, suivi du nom de l'argument . Le fichier de configuration de compilation suivant contient des arguments permettant d'exécuter une appeléebuild
:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test'] - name: 'node' entrypoint: 'npm' args: ['run', 'build']
Importer dans Artifact Registry:
Dans votre fichier de configuration, ajoutez le champ
npmPackages
et spécifiez votre npm dans Artifact Registry:artifacts: npmPackages: - repository: 'https://LOCATION-npm.pkg.dev/PROJECT-ID/REPOSITORY_NAME' packagePath: 'PACKAGE_PATH'
Remplacez les valeurs suivantes :
- LOCATION: emplacement pour votre dépôt dans Artifact Registry.
- PROJECT_ID: ID du projet Google Cloud 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. Mer
recommandez l'utilisation
d'un chemin d'accès absolu. Votre
PACKAGE_PATH
La valeur peut être.
pour utiliser le répertoire de travail actuel, mais le champ ne peut pas être omis ou laissés vides. Ce répertoire doit contenir un fichierpackage.json
.
Facultatif: Activer la génération de la provenance
Cloud Build peut générer des prédictions Compilation Niveaux de la chaîne d'approvisionnement pour les artefacts logiciels (SLSA) des métadonnées de provenance pour vous aider à sécuriser votre pipeline d'intégration continue.
Pour activer la génération de la provenance, ajoutez
requestedVerifyOption: VERIFIED
à la sectionoptions
de votre fichier de configuration.Démarrer votre compilation: manuellement ou à l'aide de déclencheurs de compilation.
Une fois la compilation terminée, vous pouvez afficher les détails du dépôt. dans Artifact Registry.
Vous pouvez également afficher les métadonnées de provenance des compilations et en valider la provenance.
Exécuter des tests sur plusieurs versions de node
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 le
node
en tant que variable de substitution. Dans l'exemple suivant, compilez$_NODE_VERSION
est une variable de substitution définie par l'utilisateur:steps: - name: 'node:$_NODE_VERSION' entrypoint: 'npm' args: ['install'] - name: 'node:$_NODE_VERSION' entrypoint: 'npm' args: ['test']
Créez un déclencheur de compilation pour chaque version de
node
avec laquelle vous souhaitez effectuer une compilation en procédant comme suit: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.
- Sous Variable, spécifiez la variable de version
node
que vous avez utilisée. Dans le fichier de configuration de compilation, et sous Valeur, spécifiez la version denode
. Par exemple,_NODE_VERSION
et12
.
- Sous Variable, spécifiez la variable de version
Cliquez sur Créer pour enregistrer le déclencheur de compilation.
Vous pouvez utiliser ces déclencheurs pour compiler votre code sur la version de node
que vous utilisez
spécifiées dans le déclencheur.
Étape suivante
- Découvrez comment afficher les résultats de la compilation.
- Découvrez comment protéger les builds.
- Découvrez comment créer des images de conteneurs.
- Découvrez comment créer des applications Go.
- Découvrez comment effectuer des déploiements bleu-vert sur Compute Engine.
- Découvrez comment résoudre les erreurs de compilation.