Crear y probar aplicaciones de Node.js

En esta página se explica cómo usar Cloud Build para compilar y probar Node.jsaplicaciones, almacenar artefactos compilados en un repositorio npm de Artifact Registry y generar información de procedencia de compilación.

Cloud Build te permite usar cualquier imagen de contenedor disponible públicamente para ejecutar tus tareas. La imagen pública node de Docker Hub viene preinstalada con la herramienta npm. Puedes configurar Cloud Build para compilar tu proyecto Node.js con esta herramienta.

Antes de empezar

En las instrucciones de esta página se da por hecho que conoces Node.js. Además:

Desarrollar con npm

Para ejecutar tus tareas en la imagen node de Docker Hub, especifica la URL de la imagen en el campo name del archivo de configuración de Cloud Build. Cloud Build inicia el contenedor especificado en el campo name con el punto de entrada predeterminado de la imagen. Para anular el punto de entrada predeterminado y definir cómo se debe ejecutar el paso de compilación cuando se invoca, añade un campo entrypoint en el paso de compilación. La imagen node de Docker Hub viene con la herramienta npm preinstalada. Especifica las herramientas en el campo entrypoint para invocarlas como punto de entrada del paso de compilación.

En el siguiente ejemplo de archivo de configuración de compilación:

  • El campo name especifica que Cloud Build usa la imagen node de Docker Hub para ejecutar tu tarea. Cuando especifiques la node imagen, puedes omitir la versión del nodo para usar la :latest de forma predeterminada o especificar una versión del nodo para usar una versión específica. Por ejemplo, name: node usará la versión más reciente de Node y name: node:12 usará node:12.
  • El campo entrypoint especifica que se usa la herramienta npm cuando se invoca la imagen node.

     steps:
     - name: 'node'
       entrypoint: 'npm'
    

Configurar compilaciones de Node.js

  1. En el directorio raíz de tu proyecto, crea un archivo de configuración llamado cloudbuild.yaml.

  2. Instala las dependencias: antes de compilar tu aplicación, debes asegurarte de que todas las dependencias de tu proyecto estén instaladas desde npm. Puedes instalar dependencias con el comando install en el paso de compilación npm. El campo args de un paso de compilación toma una lista de argumentos y los pasa a la imagen a la que hace referencia el campo name. En el archivo de configuración de compilación, añade install al campo args para invocar el comando install:

     steps:
     - name: 'node'
       entrypoint: 'npm'
       args: ['install']
    
  3. Añadir pruebas: si has definido una secuencia de comandos test en tu package.json, puedes configurar Cloud Build para que ejecute la secuencia de comandos añadiendo test al campo args:

     steps:
     - name: 'node'
       entrypoint: 'npm'
       args: ['install']
     - name: 'node'
       entrypoint: 'npm'
       args: ['test']
    
  4. Ejecutar comandos personalizados: si tu package.json contiene algún comando personalizado, puedes configurar Cloud Build para que lo ejecute. En el campo args, añade run como primer argumento seguido del nombre del comando personalizado. El siguiente archivo de configuración de compilación tiene argumentos para ejecutar un comando personalizado llamado build:

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

    En el archivo de configuración, añade el campo npmPackages y especifica tu repositorio npm en Artifact Registry:

     artifacts:
        npmPackages:
        - repository: 'https://LOCATION-npm.pkg.dev/PROJECT-ID/REPOSITORY_NAME'
          packagePath: 'PACKAGE_PATH'
    

    Sustituye los siguientes valores:

    • LOCATION: la ubicación de tu repositorio en Artifact Registry.
    • PROJECT_ID: el ID del Google Cloud proyecto que contiene tu repositorio de Artifact Registry.
    • REPOSITORY_NAME: el nombre de tu repositorio npm en Artifact Registry.
    • PACKAGE_PATH: la ruta del directorio local que contiene el paquete npm que quieres subir a Artifact Registry. Te recomendamos que uses una ruta absoluta. El valor de PACKAGE_PATH puede ser . para usar el directorio de trabajo actual, pero el campo no se puede omitir ni dejar vacío. Este directorio debe contener un archivo package.json.
  6. Opcional: Habilitar la generación de procedencia

    Cloud Build puede generar metadatos de procedencia de compilación verificables de niveles de la cadena de suministro para artefactos de software (SLSA) para proteger tu flujo de integración continua.

    Para habilitar la generación de procedencia, añade requestedVerifyOption: VERIFIED a la sección options de tu archivo de configuración.

  7. Inicia la compilación: manualmente o con activadores de compilación.

    Una vez que se haya completado la compilación, puedes ver los detalles del repositorio en Artifact Registry.

    También puedes ver los metadatos de procedencia de la compilación y validar la procedencia.

Ejecutar pruebas en varias versiones de node

A veces es necesario asegurarse de que tu proyecto funcione en varias versiones de node. Puedes crear y configurar activadores de Cloud Build para que:

  • En el archivo de configuración de compilación, especifica la versión node como una variable de sustitución.
  • Crea un activador para cada versión de node con la que quieras compilar tu aplicación.
  • En cada una de las configuraciones de los activadores, utilice el campo de valor de la variable de sustitución para indicar la versión de node de ese activador.

En los siguientes pasos se explica cómo especificar la versión de node mediante variables de sustitución específicas de los activadores:

  1. En la raíz de tu repositorio, añade un archivo de configuración de compilación que especifique la nodeversión como variable de sustitución. En el siguiente ejemplo de archivo de configuración de compilación, $_NODE_VERSION es una variable de sustitución definida por el usuario:

     steps:
     - name: 'node:$_NODE_VERSION'
       entrypoint: 'npm'
       args: ['install']
     - name: 'node:$_NODE_VERSION'
       entrypoint: 'npm'
       args: ['test']
    
  2. Para cada versión de node con la que quieras compilar, crea un activador de compilación siguiendo estos pasos:

    1. Abre la página Triggers (Activadores) en la Google Cloud consola:

      Abrir la página Activadores

    2. Selecciona tu proyecto en el menú desplegable del selector de proyectos situado en la parte superior de la página.

    3. Haz clic en Abrir.

    4. Haz clic en Crear activador.

      En la página Crear activador, introduzca los siguientes ajustes:

      1. Escribe un nombre para el activador.

      2. Selecciona el evento del repositorio para iniciar el activador.

      3. Selecciona el repositorio que contiene el código fuente y el archivo de configuración de compilación.

      4. Especifica la expresión regular del nombre de la rama o etiqueta que iniciará el activador.

      5. Configuración: elige el archivo de configuración de compilación que creaste anteriormente.

      6. En Variables de sustitución, haga clic en Añadir variable.

        1. En Variable (Variable), especifica la variable de versión node que has usado en el archivo de configuración de compilación y, en Value (Valor), especifica la versión de node. Por ejemplo, _NODE_VERSION y 12.
    5. Haz clic en Crear para guardar el activador de compilación.

Puedes usar estos activadores para compilar tu código en la versión de node que hayas especificado en el activador.

Siguientes pasos