En esta página, se explica cómo usar Cloud Build para compilar y probar Node.js
.
aplicaciones, almacenar artefactos compilados en un repositorio de npm en Artifact Registry y
y generar información
de procedencia de las compilaciones.
Cloud Build permite usar cualquier imagen de contenedor disponible a nivel público para ejecutar tareas. Público
Imagen de 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 comenzar
En las instrucciones de esta página, se da por hecho que estás familiarizado con Node.js
. Además, debes hacer lo siguiente:
- Familiarízate con npm.
- Ten a mano tu proyecto
Node.js
, incluidospackage.json
ytest.js
archivos. - Asegúrate de que el archivo
package.json
incluya una secuencia de comandosstart
y untest
secuencia de comandos. - Familiarízate con la escritura de un archivo de configuración de Cloud Build.
- Ten un repositorio de npm en Artifact Registry. Si no tienes uno, crea uno nuevo.
- Para ejecutar los comandos de
gcloud
en esta página, instala los Google Cloud CLI.
Compila con npm
Para ejecutar 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
mediante 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, agrega un campo entrypoint
en el paso de compilación. La imagen node
en Docker Hub viene
preinstalado con la herramienta npm
. Especifica las herramientas en el campo entrypoint
para
invocarlos como el punto de entrada de tu paso de compilación.
En el siguiente ejemplo de archivo de configuración de compilación, se dan las siguientes situaciones:
- En el campo
name
, se especifica que Cloud Build usa la imagennode
de Docker Hub para ejecutar la tarea. Cuando especifiquesnode
puedes omitir la versión del nodo para que sea:latest
de forma predeterminada o especifica una versión de nodo de usar una versión específica. Por ejemplo,name: node
usará la última versión del nodo, yname: node:12
usaránode:12
. El campo
entrypoint
especifica que se usa la herramientanpm
Cuando se invoca la imagennode
steps: - name: 'node' entrypoint: 'npm'
Configura compilaciones de Node.js
En el directorio raíz del proyecto, crea un archivo de configuración llamado
cloudbuild.yaml
.Instala dependencias: Antes de compilar tu aplicación, debes asegúrate de que todas las dependencias del proyecto estén instaladas desde
npm
. Tú Puedes instalar dependencias con el comandoinstall
dentro de la compilaciónnpm
paso. El campoargs
de un paso de compilación toma una lista de argumentos y pasa a la imagen a la que hace referencia el campo de nombre. En tu archivo de configuración de compilación, Agregainstall
al campoargs
para invocar el comandoinstall
:steps: - name: 'node' entrypoint: 'npm' args: ['install']
Agrega pruebas: Si definiste una secuencia de comandos
test
enpackage.json
, puedes configurar Cloud Build para que ejecute la secuencia mediante la agregación detest
al campoargs
:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test']
Ejecuta comandos personalizados: Si
package.json
contiene comandos personalizados, puedes configurar Cloud Build para ejecutar ese comando. Enargs
agregarun
como primer argumento seguido del nombre de la . El siguiente archivo de configuración de compilación tiene argumentos para ejecutar un llamadobuild
:steps: - name: 'node' entrypoint: 'npm' args: ['install'] - name: 'node' entrypoint: 'npm' args: ['test'] - name: 'node' entrypoint: 'npm' args: ['run', 'build']
Sube el archivo a Artifact Registry:
En tu archivo de configuración, agrega el campo
npmPackages
y especifica tu npm en Artifact Registry:artifacts: npmPackages: - repository: 'https://LOCATION-npm.pkg.dev/PROJECT-ID/REPOSITORY_NAME' packagePath: 'PACKAGE_PATH'
Reemplaza los siguientes valores:
- LOCATION: Es la ubicación. para tu repositorio en Artifact Registry.
- PROJECT_ID: Es el ID del proyecto de Google Cloud que contiene tu repositorio de Artifact Registry.
- REPOSITORY_NAME: Es el nombre de tu repositorio de npm en Artifact Registry.
- PACKAGE_PATH: Es la ruta de acceso del directorio local.
que contiene el paquete npm que quieres subir a Artifact Registry. Mié
se recomienda usar una ruta de acceso absoluta. Tu
PACKAGE_PATH
valor puede ser.
para usar el directorio de trabajo actual, pero el campo no puede omitirse o dejarse vacía. Este directorio debe contener un archivopackage.json
.
Opcional: Habilita la generación de procedencia
Cloud Build puede generar modelos de Compilación de Niveles de cadena de suministro para artefactos de software (SLSA) metadatos de procedencia para ayudar a proteger tu canalización de integración continua.
Para habilitar la generación de procedencia, agrega
requestedVerifyOption: VERIFIED
a la secciónoptions
de tu archivo de configuración.Inicia tu compilación: de forma manual o usar activadores de compilación
Cuando se complete la compilación, podrás ver los detalles del repositorio. en Artifact Registry.
También puedes ver los metadatos de procedencia de la compilación y validar la procedencia.
Ejecuta pruebas en varias versiones de node
En ocasiones, es necesario asegurarse de que el proyecto funcione en varias versiones de node
. Puedes crear y configurar activadores de Cloud Build de modo que se den las siguientes situaciones:
- En el archivo de configuración de compilación, especifica la versión de
node
como una variable de sustitución. - Crea un activador para cada versión de
node
con la que desees compilar la aplicación. - En cada una de las opciones de configuración del activador, usa el campo de valor de la variable de sustitución a fin de 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 del activador:
En la raíz del repositorio, agrega un archivo de configuración de compilación que especifique la
node
como una variable de sustitución. En la siguiente compilación de ejemplo, de configuració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']
Crea un activador de compilación para cada versión de
node
con la que quieras compilar. siguiendo estos pasos:Abre la página Activadores en la consola de Google Cloud:
Selecciona el proyecto en el menú desplegable del selector de proyectos, que se ubica en la parte superior de la página.
Haz clic en Abrir.
Haz clic en Crear activador.
En la página Crear activador, ingresa la siguiente configuración:
Ingresa un nombre para el activador.
Selecciona el evento del repositorio para iniciar el activador.
Selecciona el repositorio que contenga el código fuente y el archivo de configuración de compilación.
Especifica la regex de la rama o el nombre de la etiqueta que iniciará el activador.
Configuración: Elige el archivo de configuración de compilación que creaste con anterioridad.
En Substitution variables, haz clic en Agregar variable.
- En Variable, especifica la variable de versión
node
que usaste. en tu archivo de configuración de compilación y en Valor especifica la versión de lanode
. Por ejemplo,_NODE_VERSION
y12
.
- En 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
especificadas en el activador.
¿Qué sigue?
- Aprende a ver resultados de compilación.
- Obtén más información sobre cómo proteger compilaciones.
- Obtén más información sobre cómo compilar imágenes de contenedores.
- Obtén más información sobre cómo compilar aplicaciones de Go.
- Aprende a realizar implementaciones azul-verde en Compute Engine.
- Obtén más información para solucionar errores de compilación.