Créer et tester des applications Node.js

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 de provenance de 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 préinstallée avec l'outil npm. Vous pouvez configurer Cloud Build pour compiler 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 :

  • Familiarisez-vous avec npm.
  • Gardez votre projet Node.js à portée de main, y compris les fichiers package.json et test.js.
  • Assurez-vous que votre fichier package.json inclut un script start et un script test.
  • Familiarisez-vous avec la rédaction d'un fichier de configuration Cloud Build.
  • Vous devez 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.

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'outil npm est préinstallé dans l'image node de Docker Hub. Spécifiez les outils dans le champ entrypoint pour les appeler en tant que 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'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 la version du nœud pour définir la valeur par défaut sur :latest, soit spécifier une version de nœud pour utiliser une version spécifique. Par exemple, name: node utilise la dernière version de Node, et name: node:12 utilise 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

  1. Dans le répertoire racine de votre projet, créez un fichier de configuration nommé cloudbuild.yaml.

  2. Installer les dépendances: avant de pouvoir créer 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:

     steps:
     - name: 'node'
       entrypoint: 'npm'
       args: ['install']
    
  3. 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 :

     steps:
     - name: 'node'
       entrypoint: 'npm'
       args: ['install']
     - name: 'node'
       entrypoint: 'npm'
       args: ['test']
    
  4. 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 comme 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:

     steps:
     - name: 'node'
        entrypoint: 'npm'
        args: ['install']
     - name: 'node'
        entrypoint: 'npm'
        args: ['test']
     - name: 'node'
        entrypoint: 'npm'
        args: ['run', 'build']
    
  5. Importer dans Artifact Registry :

    Cloud Build génère des informations sur la provenance de compilation des niveaux de la chaîne d'approvisionnement pour les artefacts logiciels (SLSA) pour les packages npm autonomes lorsque vous les importez dans Artifact Registry à l'aide du champ npmPackages de votre fichier de configuration Cloud Build.

    Dans votre fichier de configuration, ajoutez le champ npmPackages et 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 projet Google Cloud qui contient 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.
  6. Facultatif: Activer la provenance pour les builds régionaux

    Si vous utilisez une compilation régionale, ajoutez le champ requestedVerifyOption dans le options de votre fichier de configuration de compilation. Définissez la valeur sur VERIFIED pour permettre la génération des métadonnées de provenance. Si vous n'ajoutez pas requestedVerifyOption: VERIFIED, Cloud Build ne génère la provenance que pour les builds mondiaux.

    options:
      requestedVerifyOption: VERIFIED
    
  7. Démarrer la 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 de la compilation et valider la provenance pour protéger votre chaîne d'approvisionnement logicielle.

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 :

  1. Dans la racine de votre dépôt, ajoutez un fichier de configuration de compilation, qui spécifie la version 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:

     steps:
     - name: 'node:$_NODE_VERSION'
       entrypoint: 'npm'
       args: ['install']
     - name: 'node:$_NODE_VERSION'
       entrypoint: 'npm'
       args: ['test']
    
  2. Pour chaque version de node à partir de laquelle vous souhaitez effectuer une compilation, créez un déclencheur de compilation en procédant comme suit:

    1. Ouvrez la page Déclencheurs dans la console Google Cloud:

      Ouvrir la page Déclencheurs

    2. Sélectionnez votre projet dans le menu déroulant du sélecteur de projet, en haut de la page.

    3. Cliquez sur Ouvrir.

    4. Cliquez sur Créer un déclencheur.

      Sur la page Créer un déclencheur, saisissez les paramètres suivants :

      1. Nommez votre déclencheur.

      2. Sélectionnez l'événement de dépôt pour démarrer le déclencheur.

      3. Sélectionnez le dépôt contenant le code source et le fichier de configuration de compilation.

      4. Indiquez l'expression régulière correspondant au nom de la branche ou du tag qui démarrera votre déclencheur.

      5. Configuration : sélectionnez le fichier de configuration de compilation créé précédemment.

      6. Sous Variables de substitution, cliquez sur Ajouter une variable.

        1. Sous Variable, spécifiez la variable de version node que vous avez utilisée dans votre fichier de configuration de compilation et sous Valeur, spécifiez la version de node. Par exemple, _NODE_VERSION et 12.
    5. 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 avez spécifiée.

Étapes suivantes