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 :
- Familiarisez-vous avec npm.
- Gardez à portée de main votre projet
Node.js, y compris les fichierspackage.jsonettest.js. - Assurez-vous que votre fichier
package.jsoncontient bien un scriptstartet un scripttest. - 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
gcloudsur 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
nameindique que l'imagenodede Docker Hub est utilisée par Cloud Build pour exécuter votre tâche. Lorsque vous spécifiez l'imagenode, 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: nodeutilisera la dernière version de node, tandis quename: node:12utilisera la versionnode:12. Le champ
entrypointindique que l'outilnpmest utilisé lorsque l'imagenodeest 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 commandeinstalldans l'étape de compilationnpm. Le champargsd'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, ajoutezinstallau champargspour appeler la commandeinstall:steps: - name: 'node' entrypoint: 'npm' args: ['install']Ajouter des tests : si vous avez défini un script de
testdans votre fichierpackage.json, vous pouvez configurer Cloud Build pour qu'il exécute le script en ajoutant l'argumenttestau champargs:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test']Exécuter des commandes personnalisées : si votre fichier
package.jsoncontient des commandes personnalisées, vous pouvez configurer Cloud Build pour qu'il exécute ces commandes. Dans le champargs, ajoutezrunen 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é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
npmPackageset spécifiez votre dépôt 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 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_PATHpeut ê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 fichierpackage.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 sectionoptionsde votre fichier de configuration.Démarrez 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 du build et 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
nodeen tant que variable de substitution. - Créez un déclencheur pour chaque version de
nodeavec 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
nodeen tant que variable de substitution. Dans l'exemple de fichier de configuration de compilation suivant,$_NODE_VERSIONest 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']Pour chaque version de
nodeavec 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
nodeque vous avez utilisée dans le fichier de configuration de compilation et dans Valeur, renseignez la version denode. Par exemple,_NODE_VERSIONet12.
- Dans Variable, spécifiez la variable de version de
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.
É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.