Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Tutorial: Extraer de un repositorio de paquetes
En este tutorial, aprenderá a crear un flujo de trabajo que ejecute una aplicación cuyas dependencias se extraigan de un repositorio de CodeCatalyst paquetes. La aplicación es una sencilla aplicación de Node.js que imprime un mensaje de «Hola mundo» en los registros. CodeCatalyst La aplicación tiene una sola dependencia: el paquete lodash npmlodash
paquete se usa para transformar una hello-world
cadena en. Hello World
Utilizará la versión 4.17.20 de este paquete.
Tras configurar la aplicación y el flujo de trabajo, debe configurarlos CodeCatalyst para bloquear la importación de lodash
versiones adicionales de al repositorio de CodeCatalyst paquetes desde el registro público externo (npmjs.comlodash
estén bloqueadas correctamente.
Al final de este tutorial, deberías tener una buena idea de cómo interactúa un flujo de trabajo con los repositorios de paquetes, tanto internos como externos CodeCatalyst, para recuperar los paquetes. También debes entender las behind-the-scenes interacciones que se producen entre npm, tu repositorio de paquetes, tu flujo de trabajo y el archivo de tu aplicación. package.json
Temas
- Requisitos previos
- Paso 1: Crea un repositorio de código fuente
- Paso 2: Cree los repositorios de paquetes CodeCatalyst y Gateway
- Paso 3: Crea la aplicación «Hello World»
- Paso 4: Crea un flujo de trabajo que ejecute «Hello World»
- Paso 5: Verificar el flujo de trabajo
- Paso 6: Bloquear las importaciones desde npmjs.com
- Paso 7: Prueba la función de bloqueo
- Limpieza
Requisitos previos
Antes de empezar
-
Necesitas un CodeCatalyst espacio. Para obtener más información, consulte Crear un espacio.
-
En tu CodeCatalyst espacio, necesitas un proyecto vacío llamado:
codecatalyst-package-project
Usa la opción Empezar desde cero para crear este proyecto.
Para obtener más información, consulte Crear un proyecto vacío en Amazon CodeCatalyst.
Paso 1: Crea un repositorio de código fuente
En este paso, crearás un repositorio de fuentes en CodeCatalyst. Este repositorio almacena los archivos fuente del tutorial, como los package.json
archivos index.js
y.
Para obtener más información sobre los repositorios de código fuente, consulteCrear un repositorio de código fuente.
Para crear un repositorio de origen
Abra la CodeCatalyst consola en https://codecatalyst.aws/
. -
Navegue hasta su proyecto,
codecatalyst-package-project
. -
En el panel de navegación, elija Código y, a continuación, elija Repositorios de origen.
-
Elija Agregar repositorio y, a continuación, elija Crear repositorio.
-
En Nombre del repositorio, ingresa:
hello-world-app
-
Seleccione Crear.
Paso 2: Cree los repositorios de paquetes CodeCatalyst y Gateway
En este paso, creará un repositorio de paquetes en su CodeCatalyst proyecto y lo conectará a un repositorio de puerta de enlace, también en su CodeCatalyst proyecto. Más adelante, importarás la dependencia del tutoriallodash
, desde npmjs.com a ambos repositorios.
El repositorio de puerta de enlace es el «pegamento» que conecta tu repositorio de paquetes con el npmjs.com CodeCatalyst público.
Para obtener más información sobre los repositorios de paquetes, consulte. Publica y comparte paquetes de software en CodeCatalyst
nota
En este tutorial se utilizan los términos repositorio de CodeCatalyst paquetes y repositorio de puerta de enlace para referirse a los dos repositorios en los que se crean CodeCatalyst en el siguiente procedimiento.
Para crear repositorios de CodeCatalyst paquetes y puertas de enlace
-
En el panel de navegación, elija Packages (Paquetes).
-
Seleccione Crear repositorio de paquetes.
-
En Nombre del repositorio, introduzca:
codecatalyst-package-repository
-
Elija + Seleccione los repositorios originales.
-
Elija los repositorios de Gateway.
-
En el npm-public-registry-gatewaycuadro, selecciona Crear.
-
Elija Seleccionar.
-
Seleccione Crear.
CodeCatalyst crea un repositorio de paquetes denominado
codecatalyst-package-repository
que está conectado a un repositorio de puerta de enlace. El repositorio de la puerta de enlace está conectado al registro npmjs.com.
Paso 3: Crea la aplicación «Hello World»
En este paso, crearás una aplicación Node.js llamada «Hello World» e importarás su dependencia (lodash
) a tu pasarela y a los repositorios de paquetes. CodeCatalyst
Para crear la aplicación, necesitas una máquina de desarrollo con Node.js y el cliente asociado npm
instalados.
En este tutorial se asume que utilizará un entorno CodeCatalyst de desarrollo como máquina de desarrollo. Aunque no es necesario utilizar un entorno CodeCatalyst de desarrollo, es recomendable porque proporciona un entorno de trabajo limpio, tiene Node.js npm
preinstalado y es fácil de eliminar cuando haya terminado el tutorial. Para obtener más información sobre los CodeCatalyst entornos de desarrollo, consulteCreación de un entorno de desarrollo.
Siga las instrucciones siguientes para iniciar un entorno CodeCatalyst de desarrollo y utilizarlo para crear la aplicación «Hello World».
Para lanzar un entorno de desarrollo CodeCatalyst
-
En el panel de navegación, elija Código y, a continuación, elija Entornos de desarrollo.
-
En la parte superior, selecciona Crear entorno de desarrollo y, a continuación, selecciona AWS Cloud9 (en el navegador).
-
Asegúrese de que el repositorio esté configurado
hello-world-app
como y la rama existente esté configurada comomain
. Seleccione Crear.Tu entorno de desarrollo se abre en una nueva pestaña del navegador y tu repositorio (
hello-world-app
) se clona en ella. -
Deje abiertas las dos pestañas CodeCatalyst del navegador y continúe con el siguiente procedimiento.
Para crear la aplicación Node.js «Hello World»
-
Ve a tu entorno de desarrollo.
-
En la línea de comandos del terminal, cambia al directorio raíz del repositorio de
hello-world-app
origen:cd hello-world-app
-
Inicialice un proyecto de Node.js:
npm init -y
La inicialización crea un
package.json
archivo en el directorio raíz de.hello-world-app
-
Conecte el cliente npm de su entorno de desarrollo a su repositorio de CodeCatalyst paquetes:
-
Cambie a la CodeCatalyst consola.
-
En el panel de navegación, elija Packages (Paquetes).
-
Elija
codecatalyst-package-repository
. -
Selecciona Conectar al repositorio.
-
Elige Crear token. Se crea un token de acceso personal (PAT) para usted.
-
Seleccione Copiar para copiar los comandos.
-
Cambie a su entorno de desarrollo.
-
Asegúrese de estar en el
hello-world-app
directorio. -
Pegue los comandos. Tienen un aspecto similar al siguiente:
npm set registry=https://packages.us-west-2.codecatalyst.aws/npm/ExampleCompany/codecatalyst-package-project/codecatalyst-package-repository/ --location project npm set //packages.us-west-2.codecatalyst.aws/npm/ExampleCompany/codecatalyst-package-project/hello-world-app/:_authToken=
username
:token-secret
-
-
Importe
lodash
la versión 4.17.20:npm install lodash@v4.17.20 --save --save-exact
npm busca la
lodash
versión 4.17.20 en las siguientes ubicaciones y en el orden siguiente:-
En el entorno de desarrollo. No lo puede encontrar aquí.
-
En el repositorio de CodeCatalyst paquetes. No lo encuentra aquí.
-
En el repositorio de la puerta de enlace. Aquí no lo encuentra.
-
En npmjs.com. Lo encuentra aquí.
npm importa
lodash
al repositorio de la puerta de enlace, al repositorio de CodeCatalyst paquetes y al entorno de desarrollo.nota
Si no hubieras conectado el cliente npm a tu repositorio de CodeCatalyst paquetes en el paso 4, npm lo habría extraído
lodash
directamente de npmjs.com y no habría importado el paquete a ninguno de los repositorios.npm también actualiza tu
package.json
archivo con lalodash
dependencia y crea unnode_modules
directorio que contiene todas sus dependencias.lodash
-
-
Compruebe que
lodash
se haya importado correctamente a su entorno de desarrollo. Introduzca:npm list
Aparece el siguiente mensaje que indica que la importación se ha realizado correctamente:
`-- lodash@4.17.20
-
(Opcional) Abra
hello-world-app/package.json
y compruebe que las líneasred bold
se agregaron:{ "name": "hello-world-app", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC",
dependencies": { "lodash": "4.17.20"
} } -
En
/hello-world-app
, cree un archivo llamadoindex.js
con el siguiente contenido:sugerencia
Puede utilizar la navegación lateral de su entorno de desarrollo para crear este archivo.
// Importing lodash library const _ = require('lodash'); // Input string const inputString = 'hello-world'; // Transforming the string using lodash const transformedString = _.startCase(inputString.replace('-', ' ')); // Outputting the transformed string to the console console.log(transformedString);
Para comprobar que 'lodash' se ha importado a tu gateway y a tus repositorios de CodeCatalyst paquetes
-
Cambie a la consola. CodeCatalyst
-
En el panel de navegación, elija Packages (Paquetes).
-
Elige npm-public-registry-gateway.
-
Asegúrese de que
lodash
se muestre. Lo indica la columna Última versión4.17.20
. -
Repita este procedimiento para
codecatalyst-package-repository
. Puede que necesite actualizar la ventana del navegador para ver el paquete importado.
Para probar «Hello World» en tu entorno de desarrollo
-
Cambie a su entorno de desarrollo.
-
Asegúrese de seguir en el
hello-world-app
directorio y, a continuación, ejecute la aplicación:node index.js
Aparece un
Hello World
mensaje. Node.js ejecutó la aplicación con ellodash
paquete que descargó en su entorno de desarrollo en un paso anterior.
Para ignorar el directorio 'node_modules' y confirmar 'Hello World'
-
node_modules
Ignora el directorio. Introduzca:echo "node_modules/" >> .gitignore
Se recomienda evitar comprometer este directorio. Además, confirmar este directorio interferirá con los pasos posteriores de este tutorial.
-
Agrega, confirma y presiona:
git add . git commit -m "add the Hello World application" git push
Los archivos de la aplicación y del proyecto «Hello World» se añaden a tu repositorio de código fuente.
Paso 4: Crea un flujo de trabajo que ejecute «Hello World»
En este paso, crearás un flujo de trabajo que ejecute la aplicación «Hello World» utilizando la dependencia. lodash
El flujo de trabajo incluye una sola acción o tarea llamada. RunHelloWorldApp
La RunHelloWorldApp
acción incluye los siguientes comandos y secciones dignos de mención:
-
Packages
En esta sección se indica el nombre del repositorio de CodeCatalyst paquetes al que se debe conectar la acción cuando se ejecuta
npm install
. -
- Run: npm install
Este comando indica a npm que instale las dependencias especificadas en el
package.json
archivo. La única dependencia especificada en elpackage.json
archivo eslodash
. npm buscalodash
en las siguientes ubicaciones:-
En la imagen de Docker que se ejecuta la acción. No lo encuentra aquí.
-
En el repositorio de CodeCatalyst paquetes. Lo encuentra aquí.
Una vez que npm lo encuentra
lodash
, lo importa a la imagen de Docker que ejecuta la acción. -
-
- Run: npm list
Este comando imprime qué versión de
lodash
se descargó en la imagen de Docker que ejecuta la acción. -
- Run: node index.js
Este comando ejecuta la aplicación «Hello World» mediante la dependencia especificada en el archivo.
package.json
Observe que la RunHelloWorldApp
acción es una acción de creación, como lo indica el aws/build@v1
identificador situado en la parte superior del flujo de trabajo. Para obtener más información sobre la acción de creación, consulteConstruir con flujos de trabajo.
Siga las instrucciones siguientes para crear un flujo de trabajo que extraiga la lodash
dependencia del repositorio de CodeCatalyst paquetes y, a continuación, ejecute la aplicación «Hello World».
Para crear un flujo de trabajo
-
Cambie a la consola. CodeCatalyst
-
En el panel de navegación, elija CI/CD y, a continuación, elija Flujos de trabajo.
-
Seleccione Crear flujo de trabajo.
-
En Repositorio de origen, elija
hello-world-app
. -
Para Branch, elija
main
.El archivo de definición del flujo de trabajo se creará en el repositorio y la rama de origen elegidos.
-
Seleccione Crear.
-
Elija YAMLcerca de la parte superior.
-
Elimine el código de YAML muestra.
-
Añada el YAML código siguiente:
Name: codecatalyst-package-workflow SchemaVersion: "1.0" # Required - Define action configurations. Actions: RunHelloWorldApp: # Identifies the action. Do not modify this value. Identifier: aws/build@v1 Compute: Type: Lambda Inputs: Sources: - WorkflowSource # This specifies your source repository. Configuration: Steps: - Run: npm install - Run: npm list - Run: node index.js Container: # This specifies the Docker image that runs the action. Registry: CODECATALYST Image: CodeCatalystLinuxLambda_x86_64:2024_03 Packages: NpmConfiguration: PackageRegistries: - PackagesRepository:
codecatalyst-package-repository
En el código anterior, sustituya
codecatalyst-package-repository
por el nombre del repositorio de CodeCatalyst paquetes en el que creóPaso 2: Cree los repositorios de paquetes CodeCatalyst y Gateway.Para obtener información sobre las propiedades de este archivo, consulte laCrear y probar acciones YAML.
-
(Opcional) Elija Validar para asegurarse de que el YAML código es válido antes de confirmarlo.
-
Elija Commit (Confirmar).
-
En el cuadro de diálogo Confirmar flujo de trabajo, introduzca lo siguiente:
-
Para el nombre del archivo de flujo de trabajo, mantenga el valor predeterminado,
codecatalyst-package-workflow
. -
Para el mensaje de confirmación, introduzca:
add initial workflow file
-
En Repositorio, elija hello-world-app.
-
Para el nombre de la sucursal, elija principal.
-
Elija Commit (Confirmar).
Ahora ha creado un flujo de trabajo.
-
Para ejecutar el flujo de trabajo
-
Junto al flujo de trabajo que acabas de crear (
codecatalyst-package-workflow
), selecciona Acciones y, a continuación, selecciona Ejecutar.Se inicia una ejecución del flujo de trabajo.
-
En la notificación verde de la parte superior derecha, elige el enlace a la ejecución. El enlace tiene un aspecto similar a
View Run-1234
.Aparece un diagrama de flujo de trabajo que muestra quién inició la ejecución y la RunHelloWorldAppacción.
-
Selecciona la casilla de RunHelloWorldAppacción para ver el progreso de la acción.
-
Cuando termine la ejecución, ve aPaso 5: Verificar el flujo de trabajo.
Paso 5: Verificar el flujo de trabajo
En este paso, verifica que el flujo de trabajo haya ejecutado correctamente la aplicación «Hello World» con su lodash
dependencia.
Para comprobar que la aplicación «Hello World» se ejecutó utilizando su dependencia
-
En el diagrama de flujo de trabajo, selecciona la RunHelloWorldAppcasilla.
Aparece una lista de mensajes de registro.
-
Amplíe el mensaje de
node index.js
registro.Aparece el siguiente mensaje:
[Container] 2024/04/24 21:15:41.545650 Running command node index.js Hello World
La aparición de
Hello Word
(en lugar dehello-world
) indica que lalodash
dependencia se utilizó correctamente. -
Amplíe el
npm list
registro.Aparece un mensaje similar al siguiente:
└── lodash@4.17.20
Este mensaje indica que la
lodash
versión 4.17.20 se descargó a la imagen de Docker que ejecutaba la acción del flujo de trabajo.
Paso 6: Bloquear las importaciones desde npmjs.com
Ahora que la lodash
versión 4.17.20 está presente en tu gateway y en los repositorios de CodeCatalyst paquetes, puedes bloquear las importaciones de otras versiones. El bloqueo impide importar accidentalmente versiones posteriores (o anteriores) delodash
, que podrían contener código malintencionado. Para obtener más información, consulte Edición de los controles de origen del paquete y Ataques de sustitución de dependencias.
Sigue las siguientes instrucciones para bloquear las importaciones de archivos lodash
a tu repositorio de gateway. Al bloquear los paquetes en la puerta de enlace, también se bloquean en las ubicaciones posteriores.
Para bloquear las importaciones al repositorio de su puerta de enlace
-
En el panel de navegación, elija Packages (Paquetes).
-
Elige npm-publish-registry-gateway.
-
Elija
lodash
. -
Cerca de la parte superior, selecciona los controles de Origin.
-
En Upstream, selecciona Bloquear.
-
Seleccione Guardar.
Ahora has bloqueado las importaciones a tu repositorio de gateway (y a los repositorios y ordenadores posteriores) desde npmjs.com.
Paso 7: Prueba la función de bloqueo
En esta sección, comprueba que el bloqueo que configuró Paso 6: Bloquear las importaciones desde npmjs.com funciona. Empiece por configurar «Hello World» para solicitar la versión 4.17.2 1 lodash
en lugar de la que está disponible en el repositorio de su puerta de enlace, que es la 4.17.2 0. A continuación, comprueba que la aplicación no puede extraer la versión 4.17.21 de nmpjs.com, lo que indica que el bloqueo se ha producido correctamente. Como prueba final, desbloqueas las importaciones a tu repositorio de gateway y compruebas que la aplicación puede extraer correctamente la versión 4.17.21 de. lodash
Utilice el siguiente conjunto de procedimientos para probar la función de bloqueo.
Antes de empezar
-
Cambie a su entorno de desarrollo.
-
Extraiga el
codecatalyst-package-workflow.yaml
archivo que creó anteriormente con la CodeCatalyst consola:git pull
Para configurar «Hello World» para solicitar la versión 4.17.21 de «lodash»
-
Abra
/hello-world-app/package.json
. -
Cambie la
lodash
versión a la 4.17.21 como se muestra enred bold
:{ "name": "hello-world-app", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "lodash": "
4.17.21
" } }Ahora hay una discrepancia entre la versión del
package.json
archivo (4.17.21) y la versión de los repositorios de CodeCatalyst paquetes y de la puerta de enlace (4.17.20). -
Agregue, confirme y presione:
git add . git commit -m "update package.json to use lodash 4.17.21" git push
Para comprobar que 'Hello World' no puede extraer la versión 4.17.21 de 'lodash'
-
Ejecute el flujo de trabajo con la versión no coincidente:
-
Cambie a la CodeCatalyst consola.
-
En el panel de navegación, elija CI/CD y, a continuación, elija Flujos de trabajo.
-
Junto a
codecatalyst-package-workflow
, selecciona Acciones y, a continuación, selecciona Ejecutar.npm
package.json
busca las dependencias y ve que «Hello World» requiere la versión 4.17.21 delodash
. npm busca la dependencia en las siguientes ubicaciones y en el orden siguiente:-
En la imagen de Docker que se ejecuta la acción. No lo encuentra aquí.
-
En el repositorio de CodeCatalyst paquetes. No lo encuentra aquí.
-
En el repositorio de la puerta de enlace. Aquí no lo encuentra.
-
En npmjs.com. Lo encuentra aquí.
Una vez que npm encuentra la versión 4.17.21 en npmjs.com, intenta importarla al repositorio de la puerta de enlace, pero la importación no se produce debido a que configuraste la puerta de enlace para bloquear las importaciones de esa
lodash
versión.Como la importación no se produce, se produce un error en el flujo de trabajo.
-
-
-
Compruebe que se ha producido un error en el flujo de trabajo:
-
En la notificación verde de la parte superior derecha, selecciona el enlace a la ejecución. El enlace tiene un aspecto similar a
View Run-2345
. -
En el diagrama de flujo de trabajo, selecciona la RunHelloWorldAppcasilla.
-
Amplíe el mensaje de
npm install
registro.Aparece el siguiente mensaje:
[Container] 2024/04/25 17:20:34.995591 Running command npm install npm ERR! code ETARGET npm ERR! notarget No matching version found for lodash@4.17.21. npm ERR! notarget In most cases you or one of your dependencies are requesting npm ERR! notarget a package version that doesn't exist. npm ERR! A complete log of this run can be found in: /tmp/.npm/_logs/2024-05-08T22_03_26_493Z-debug-0.log
El error indica que no se encontró la versión 4.17.21. Esto es de esperar porque la has bloqueado.
-
Para desbloquear las importaciones de npmjs.com
-
En el panel de navegación, elija Packages (Paquetes).
-
npm-publish-registry-gatewayElige.
-
Elija
lodash
. -
Cerca de la parte superior, selecciona los controles de Origin.
-
En Upstream, selecciona Permitir.
-
Seleccione Guardar.
Ahora has desbloqueado las importaciones de.
lodash
Su flujo de trabajo ahora puede importar la versión 4.17.21 de.
lodash
Para comprobar que las importaciones de npmjs.com están desbloqueadas
-
Vuelva a ejecutar el flujo de trabajo. Esta vez, el flujo de trabajo debería funcionar correctamente porque la importación de la versión 4.17.21 debería funcionar ahora. Para volver a ejecutar el flujo de trabajo:
-
Elija CI/CD y, a continuación, elija Flujos de trabajo.
-
Junto a
codecatalyst-package-workflow
, selecciona Acciones y selecciona Ejecutar. -
En la notificación verde situada en la parte superior derecha, selecciona el enlace a la ejecución. El enlace tiene un aspecto similar a
View Run-3456
.Aparece un diagrama de flujo de trabajo que muestra quién inició la ejecución y la RunHelloWorldAppacción.
-
Selecciona la casilla de RunHelloWorldAppacción para ver el progreso de la acción.
-
Expanda el mensaje de
npm list
registro y compruebe que aparece un mensaje similar al siguiente:└── lodash@4.17.21
Este mensaje indica que se
lodash
descargó la versión 4.17.21.
-
-
Compruebe que la versión 4.17.21 se haya importado a sus repositorios y a los de Gateway CodeCatalyst :
-
En el panel de navegación, elija Packages (Paquetes).
-
Elija. npm-public-registry-gateway
-
Busque
lodash
y asegúrese de que la versión es4.17.21
.nota
Aunque la versión 4.17.20 no aparece en esta página, puede encontrarla seleccionando
lodash
y, a continuación, seleccionando Versiones en la parte superior. -
Repita estos pasos para comprobar a qué versión se importó la versión 4.17.21.
codecatalyst-package-repository
-
Limpieza
Limpie los archivos y servicios utilizados en este tutorial para evitar que se le cobre por ellos.
Para limpiar los paquetes, tutorial
-
Elimine
codecatalyst-package-project
:-
En la CodeCatalyst consola, navega hasta el
codecatalyst-package-project
proyecto si aún no lo has hecho. -
En el panel de navegación, selecciona Configuración del proyecto.
-
Seleccione Eliminar proyecto
delete
, introduzca y elija Eliminar proyecto.CodeCatalyst elimina todos los recursos del proyecto, incluidos los repositorios de origen, puerta de enlace y CodeCatalyst paquetes. También se elimina el entorno de desarrollo.
-
-
Elimine el PAT token:
-
Elige tu nombre de usuario a la derecha y, a continuación, selecciona Mi configuración.
-
En Tokens de acceso personal, elige el token que creaste en este tutorial y selecciona Eliminar.
-
En este tutorial, aprendió a crear un flujo de trabajo que ejecute una aplicación que extraiga sus dependencias de un repositorio de CodeCatalyst paquetes. También aprendiste a bloquear y desbloquear paquetes para que no ingresen a tu puerta de enlace y a los repositorios de CodeCatalyst paquetes.