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:
- Familiarízate con npm.
- Ten a mano tu proyecto Node.js, incluidos los archivospackage.jsonytest.js.
- Asegúrate de que tu archivo package.jsonincluya una secuencia de comandosstarty una secuencia de comandostest.
- Familiarízate con cómo escribir un archivo de configuración de Cloud Build.
- Tener un repositorio npm en Artifact Registry. Si no tienes ninguno, crea un repositorio.
- Para ejecutar los comandos gcloudde esta página, instala la CLI de Google Cloud.
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 nameespecifica que Cloud Build usa la imagennodede Docker Hub para ejecutar tu tarea. Cuando especifiques lanodeimagen, puedes omitir la versión del nodo para usar la:latestde forma predeterminada o especificar una versión del nodo para usar una versión específica. Por ejemplo,name: nodeusará la versión más reciente de Node yname: node:12usaránode:12.
- El campo - entrypointespecifica que se usa la herramienta- npmcuando se invoca la imagen- node.- steps: - name: 'node' entrypoint: 'npm'
Configurar compilaciones de Node.js
- En el directorio raíz de tu proyecto, crea un archivo de configuración llamado - cloudbuild.yaml.
- 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- installen el paso de compilación- npm. El campo- argsde 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- installal campo- argspara invocar el comando- install:- steps: - name: 'node' entrypoint: 'npm' args: ['install']
- Añadir pruebas: si has definido una secuencia de comandos - testen tu- package.json, puedes configurar Cloud Build para que ejecute la secuencia de comandos añadiendo- testal campo- args:- steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test']
- Ejecutar comandos personalizados: si tu - package.jsoncontiene algún comando personalizado, puedes configurar Cloud Build para que lo ejecute. En el campo- args, añade- runcomo 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']
- Subir a Artifact Registry: - En el archivo de configuración, añade el campo - npmPackagesy 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_PATHpuede ser.para usar el directorio de trabajo actual, pero el campo no se puede omitir ni dejar vacío. Este directorio debe contener un archivopackage.json.
 
- 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: VERIFIEDa la sección- optionsde tu archivo de configuración.
- 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 nodecomo una variable de sustitución.
- Crea un activador para cada versión de nodecon 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 nodede 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:
- 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_VERSIONes 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']
- Para cada versión de - nodecon la que quieras compilar, crea un activador de compilación siguiendo estos pasos:- Abre la página Triggers (Activadores) en la Google Cloud consola: 
- Selecciona tu proyecto en el menú desplegable del selector de proyectos situado en la parte superior de la página. 
- Haz clic en Abrir. 
- Haz clic en Crear activador. - En la página Crear activador, introduzca los siguientes ajustes: - Escribe un nombre para el activador. 
- Selecciona el evento del repositorio para iniciar el activador. 
- Selecciona el repositorio que contiene el código fuente y el archivo de configuración de compilación. 
- Especifica la expresión regular del nombre de la rama o etiqueta que iniciará el activador. 
- Configuración: elige el archivo de configuración de compilación que creaste anteriormente. 
- En Variables de sustitución, haga clic en Añadir variable. - En Variable (Variable), especifica la variable de versión nodeque has usado en el archivo de configuración de compilación y, en Value (Valor), especifica la versión denode. Por ejemplo,_NODE_VERSIONy12.
 
- En Variable (Variable), especifica la variable de versión 
 
- 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
- Consulta cómo ver los resultados de las compilaciones.
- Consulta cómo proteger las compilaciones.
- Consulta cómo crear imágenes de contenedor.
- Consulta cómo crear aplicaciones Go.
- Consulta cómo realizar implementaciones azul/verde en Compute Engine.
- Consulta cómo solucionar errores de compilación.