Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Tutoriel : extraction depuis un dépôt de packages
Dans ce didacticiel, vous apprendrez à créer un flux de travail qui exécute une application dont les dépendances sont extraites d'un référentiel de CodeCatalyst packages. L'application est une simple application Node.js qui imprime un message « Hello World » dans les CodeCatalyst journaux. L'application n'a qu'une seule dépendance : le package lodashlodash
package est utilisé pour transformer une hello-world
chaîne enHello World
. Vous utiliserez la version 4.17.20 de ce package.
Après avoir configuré votre application et votre flux de travail, vous configurez CodeCatalyst pour empêcher l'importation de versions supplémentaires lodash
de dans le référentiel de CodeCatalyst packages depuis le registre externe public (npmjs.comlodash
sont bloquées avec succès.
À la fin de ce didacticiel, vous devriez avoir une bonne compréhension de la manière dont un flux de travail interagit avec les référentiels de packages, à la fois internes et externes CodeCatalyst, afin de récupérer des packages. Vous devez également comprendre les behind-the-scenes interactions qui se produisent entre npm, votre référentiel de packages, votre flux de travail et le package.json
fichier de votre application.
Rubriques
- Prérequis
- Étape 1 : Création d'un référentiel source
- Étape 2 : Création des référentiels de packages CodeCatalyst et de passerelle
- Étape 3 : Création de l'application « Hello World »
- Étape 4 : créer un flux de travail qui exécute « Hello World »
- Étape 5 : vérifier le flux de travail
- Étape 6 : Bloquer les importations depuis npmjs.com
- Étape 7 : Testez la fonction de blocage
- Nettoyage
Prérequis
Avant de commencer :
-
Tu as besoin d'un CodeCatalyst espace. Pour plus d’informations, consultez Création d'un espace.
-
Dans votre CodeCatalyst espace, vous avez besoin d'un projet vide appelé :
codecatalyst-package-project
Utilisez l'option Partir de zéro pour créer ce projet.
Pour plus d’informations, consultez Création d'un projet vide dans Amazon CodeCatalyst.
Étape 1 : Création d'un référentiel source
Au cours de cette étape, vous créez un référentiel source dans CodeCatalyst. Ce référentiel stocke les fichiers source du didacticiel, tels que les package.json
fichiers index.js
et.
Pour plus d'informations sur les référentiels sources, consultezCréation d'un référentiel source.
Pour créer un référentiel de sources
Ouvrez la CodeCatalyst console à l'adresse https://codecatalyst.aws/
. -
Accédez à votre projet,
codecatalyst-package-project
. -
Dans le volet de navigation, choisissez Code, puis sélectionnez Référentiels sources.
-
Choisissez Ajouter un référentiel, puis sélectionnez Créer un référentiel.
-
Dans Nom du référentiel, entrez :
hello-world-app
-
Choisissez Créer.
Étape 2 : Création des référentiels de packages CodeCatalyst et de passerelle
Au cours de cette étape, vous créez un référentiel de packages dans votre CodeCatalyst projet et vous le connectez à un référentiel de passerelle, également inclus dans votre CodeCatalyst projet. Vous importez ensuite la dépendance du didacticiel depuis npmjs.com dans les deux référentiels. lodash
Le référentiel de passerelle est le « ciment » qui connecte votre dépôt de packages CodeCatalyst au site public npmjs.com.
Pour plus d'informations sur les référentiels de packages, consultezPubliez et partagez des progiciels dans CodeCatalyst.
Note
Ce didacticiel utilise les termes référentiel de CodeCatalyst packages et référentiel de passerelle pour désigner les deux référentiels que vous créez CodeCatalyst dans la procédure suivante.
Pour créer des référentiels de CodeCatalyst packages et de passerelles
-
Dans le panneau de navigation, choisissez Packages.
-
Choisissez Créer un référentiel de packages.
-
Dans Nom du référentiel, entrez :
codecatalyst-package-repository
-
Choisissez + Sélectionnez les référentiels en amont.
-
Choisissez les référentiels Gateway.
-
Dans le npm-public-registry-gatewaychamp, choisissez Create.
-
Choisissez Select (Sélectionner).
-
Choisissez Créer.
CodeCatalyst crée un référentiel de packages appelé
codecatalyst-package-repository
qui est connecté à un référentiel de passerelle. Le référentiel de passerelle est connecté au registre npmjs.com.
Étape 3 : Création de l'application « Hello World »
Au cours de cette étape, vous allez créer une application Node.js « Hello World » et importer sa dépendance (lodash
) dans votre passerelle et vos référentiels de CodeCatalyst packages.
Pour créer l'application, vous avez besoin d'une machine de développement sur laquelle Node.js et le npm
client associé sont installés.
Ce didacticiel part du principe que vous utiliserez CodeCatalyst un environnement de développement comme machine de développement. Bien que vous n'ayez pas à utiliser un environnement CodeCatalyst de développement, il est recommandé car il fournit un environnement de travail propre, contient Node.js et est npm
préinstallé, et il est facile à supprimer lorsque vous avez terminé le didacticiel. Pour plus d'informations sur les CodeCatalyst environnements de développement, consultezCréation d'un environnement de développement.
Suivez les instructions suivantes pour lancer un environnement de CodeCatalyst développement et utilisez-le pour créer l'application « Hello World ».
Pour lancer un environnement CodeCatalyst de développement
-
Dans le volet de navigation, choisissez Code, puis Dev Environments.
-
En haut, choisissez Create Dev Environment, puis choisissez AWS Cloud9 (dans le navigateur).
-
Assurez-vous que le référentiel est défini sur
hello-world-app
et que la branche existante est définie surmain
. Choisissez Créer.Votre environnement de développement s'ouvre dans un nouvel onglet du navigateur, et votre dépôt (
hello-world-app
) y est cloné. -
Laissez les deux onglets CodeCatalyst du navigateur ouverts et passez à la procédure suivante.
Pour créer l'application « Hello World » Node.js
-
Accédez à votre environnement de développement.
-
À l'invite du terminal, accédez au répertoire racine du référentiel
hello-world-app
source :cd hello-world-app
-
Initialisez un projet Node.js :
npm init -y
L'initialisation crée un
package.json
fichier dans le répertoire racine dehello-world-app
. -
Connectez le client npm de votre environnement de développement à votre référentiel de CodeCatalyst packages :
-
Passez à la CodeCatalyst console.
-
Dans le panneau de navigation, choisissez Packages.
-
Sélectionnez
codecatalyst-package-repository
. -
Choisissez Connect to repository.
-
Choisissez Créer un jeton. Un jeton d'accès personnel (PAT) est créé pour vous.
-
Choisissez Copier pour copier les commandes.
-
Passez à votre environnement de développement.
-
Vérifiez que vous êtes dans le
hello-world-app
répertoire. -
Collez les commandes. Ils ressemblent à ce qui suit :
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
-
-
lodash
Version d'importation 4.17.20 :npm install lodash@v4.17.20 --save --save-exact
npm recherche la
lodash
version 4.17.20 aux emplacements suivants, dans l'ordre suivant :-
Dans l'environnement de développement. Il ne le trouve pas ici.
-
Dans le référentiel de CodeCatalyst packages. Il ne le trouve pas ici.
-
Dans le référentiel de la passerelle. Il ne le trouve pas ici.
-
Dans npmjs.com. Il le trouve ici.
npm importe
lodash
dans le référentiel de passerelle, le référentiel de CodeCatalyst packages et l'environnement de développement.Note
Si vous n'aviez pas connecté le client npm à votre référentiel de CodeCatalyst packages à l'étape 4, npm aurait extrait
lodash
directement le package de npmjs.com et n'aurait importé le package dans aucun des référentiels.npm met également à jour votre
package.json
fichier avec lalodash
dépendance et crée unnode_modules
répertoire contenantlodash
toutes ses dépendances. -
-
Testez qui
lodash
a été importé avec succès dans votre environnement de développement. Entrez :npm list
Le message suivant s'affiche, indiquant que l'importation a été effectuée avec succès :
`-- lodash@4.17.20
-
(Facultatif) Ouvrez
hello-world-app/package.json
et vérifiez que les lignes dered bold
ont été ajoutés :{ "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"
} } -
Dans
/hello-world-app
, créez un fichier appeléindex.js
avec le contenu suivant :Astuce
Vous pouvez utiliser la navigation latérale de votre environnement de développement pour créer ce fichier.
// 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);
Pour vérifier que « lodash » a été importé dans votre passerelle et vos référentiels de CodeCatalyst packages
-
Passez à la CodeCatalyst console.
-
Dans le panneau de navigation, choisissez Packages.
-
Choisissez npm-public-registry-gateway.
-
Assurez-vous qu'
lodash
il est affiché. La colonne Dernière version indique4.17.20
. -
Répétez cette procédure pour
codecatalyst-package-repository
. Il se peut que vous deviez actualiser la fenêtre du navigateur pour voir le package importé.
Pour tester « Hello World » dans votre environnement de développement
-
Passez à votre environnement de développement.
-
Assurez-vous que vous êtes toujours dans le
hello-world-app
répertoire, puis lancez l'application :node index.js
Un
Hello World
message s'affiche. Node.js a exécuté l'application à l'aidelodash
du package que vous avez téléchargé dans votre environnement de développement lors d'une étape précédente.
Pour ignorer le répertoire « node_modules » et valider « Hello World »
-
Ignorez le
node_modules
répertoire. Entrez :echo "node_modules/" >> .gitignore
Il est recommandé d'éviter de valider ce répertoire. De plus, la validation de ce répertoire interférera avec les étapes ultérieures de ce didacticiel.
-
Ajoutez, validez et envoyez :
git add . git commit -m "add the Hello World application" git push
L'application « Hello World » et les fichiers de projet sont ajoutés à votre référentiel source.
Étape 4 : créer un flux de travail qui exécute « Hello World »
Au cours de cette étape, vous créez un flux de travail qui exécute l'application « Hello World » à l'aide de la lodash
dépendance. Le flux de travail inclut une seule action, ou tâche, appeléeRunHelloWorldApp
. L'RunHelloWorldApp
action inclut les commandes et sections remarquables suivantes :
-
Packages
Cette section indique le nom du référentiel de CodeCatalyst packages auquel l'action doit se connecter lors de son exécution
npm install
. -
- Run: npm install
Cette commande indique à npm d'installer les dépendances spécifiées dans le
package.json
fichier. La seule dépendance spécifiée dans lepackage.json
fichier estlodash
. npm recherchelodash
dans les emplacements suivants :-
Dans l'image Docker en cours d'exécution de l'action. Il ne le trouve pas ici.
-
Dans le référentiel de CodeCatalyst packages. Il le trouve ici.
Une fois que npm l'a trouvé
lodash
, il l'importe dans l'image Docker exécutant l'action. -
-
- Run: npm list
Cette commande affiche la version de qui
lodash
a été téléchargée sur l'image Docker exécutant l'action. -
- Run: node index.js
Cette commande exécute l'application « Hello World » en utilisant la dépendance spécifiée dans le
package.json
fichier.
Notez que l'RunHelloWorldApp
action est une action de création, comme indiqué par l'aws/build@v1
identifiant situé en haut du flux de travail. Pour plus d'informations sur l'action de génération, consultezConstruire avec des flux de travail.
Suivez les instructions ci-dessous pour créer un flux de travail qui extrait la lodash
dépendance de votre référentiel de CodeCatalyst packages, puis exécute votre application « Hello World ».
Pour créer un flux de travail
-
Passez à la CodeCatalyst console.
-
Dans le volet de navigation, choisissez CI/CD, puis Workflows.
-
Choisissez Créer un flux de travail.
-
Pour Référentiel source, choisissez
hello-world-app
. -
Pour Branch, choisissez
main
.Le fichier de définition du flux de travail sera créé dans le référentiel source et la branche choisis.
-
Choisissez Créer.
-
Choisissez YAMLprès du haut.
-
Supprimez l'YAMLexemple de code.
-
Ajoutez le YAML code suivant :
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
Dans le code précédent, remplacez
codecatalyst-package-repository
avec le nom du référentiel de CodeCatalyst packages dans lequel vous l'avez crééÉtape 2 : Création des référentiels de packages CodeCatalyst et de passerelle.Pour plus d'informations sur les propriétés de ce fichier, consultez leCréez et testez des actions YAML.
-
(Facultatif) Choisissez Valider pour vous assurer que le YAML code est valide avant de le valider.
-
Choisissez Commit (Valider).
-
Dans la boîte de dialogue du flux de travail de validation, entrez ce qui suit :
-
Pour le nom du fichier de flux de travail, conservez la valeur par défaut,
codecatalyst-package-workflow
. -
Pour le message de validation, entrez :
add initial workflow file
-
Pour Repository, choisissez hello-world-app.
-
Pour Nom de la branche, choisissez main.
-
Choisissez Commit (Valider).
Vous venez de créer un flux de travail.
-
Pour exécuter le flux de travail
-
À côté du flux de travail que vous venez de créer (
codecatalyst-package-workflow
), choisissez Actions, puis Exécuter.Une exécution de flux de travail démarre.
-
Dans la notification verte en haut à droite, choisissez le lien vers la course. Le lien ressemble à
View Run-1234
.Un diagramme de flux de travail apparaît, indiquant qui a lancé l'exécution et l'RunHelloWorldAppaction.
-
Choisissez la case RunHelloWorldAppd'action pour suivre la progression de l'action.
-
Lorsque la course est terminée, passez àÉtape 5 : vérifier le flux de travail.
Étape 5 : vérifier le flux de travail
Au cours de cette étape, vous vérifiez que le flux de travail a correctement exécuté l'application « Hello World » avec ses lodash
dépendances.
Pour vérifier que l'application « Hello World » s'exécute en utilisant sa dépendance
-
Dans le diagramme du flux de travail, RunHelloWorldAppcochez la case.
La liste des messages du journal s'affiche.
-
Développez le message du
node index.js
journal.Le message suivant s'affiche :
[Container] 2024/04/24 21:15:41.545650 Running command node index.js Hello World
L'apparition de
Hello Word
(au lieu dehello-world
) indique que lalodash
dépendance a été utilisée avec succès. -
Développez le
npm list
journal.Un message similaire au suivant s'affiche :
└── lodash@4.17.20
Ce message indique que
lodash
la version 4.17.20 a été téléchargée sur l'image Docker exécutant l'action de flux de travail.
Étape 6 : Bloquer les importations depuis npmjs.com
Maintenant que lodash
la version 4.17.20 est présente dans votre passerelle et vos référentiels de CodeCatalyst packages, vous pouvez bloquer les importations d'autres versions. Le blocage vous empêche d'importer accidentellement des versions ultérieures (ou antérieures) delodash
, susceptibles de contenir du code malveillant. Pour plus d’informations, consultez Modification des contrôles d'origine des packages et Attaques de substitution de la dépendance.
Suivez les instructions suivantes pour bloquer les importations de lodash
vers votre référentiel de passerelle. Lorsque vous bloquez des packages au niveau de la passerelle, ils sont également bloqués en aval.
Pour bloquer les importations vers votre référentiel de passerelle
-
Dans le panneau de navigation, choisissez Packages.
-
Choisissez npm-publish-registry-gateway.
-
Sélectionnez
lodash
. -
En haut, choisissez Origin controls.
-
Sous Upstream, choisissez Bloquer.
-
Choisissez Enregistrer.
Vous avez désormais bloqué les importations dans votre référentiel de passerelle (ainsi que dans les référentiels et ordinateurs en aval) depuis npmjs.com.
Étape 7 : Testez la fonction de blocage
Dans cette section, vous allez vérifier que le blocage que vous avez Étape 6 : Bloquer les importations depuis npmjs.com configuré fonctionne. Vous commencez par configurer « Hello World » pour demander la version 4.17.2 1 lodash
au lieu de celle disponible dans votre référentiel de passerelle, qui est 4.17.2 0. Vous vérifiez ensuite que l'application ne peut pas extraire la version 4.17.21 de nmpjs.com, ce qui indique un blocage réussi. En guise de test final, vous débloquez les importations vers votre référentiel de passerelle et vous vérifiez que l'application peut extraire avec succès la version 4.17.21 de. lodash
Utilisez l'ensemble de procédures suivant pour tester la fonctionnalité de blocage.
Avant de commencer
-
Passez à votre environnement de développement.
-
Extrayez le
codecatalyst-package-workflow.yaml
fichier que vous avez créé à l'aide de la CodeCatalyst console plus tôt :git pull
Pour configurer 'Hello World' pour demander la version 4.17.21 de 'lodash'
-
Ouvrir
/hello-world-app/package.json
. -
Changez la
lodash
version en 4.17.21 comme indiqué dansred 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
" } }Il existe désormais une incompatibilité entre la version du
package.json
fichier (4.17.21) et celle de la passerelle et des référentiels de CodeCatalyst packages (4.17.20). -
Ajoutez, validez et envoyez :
git add . git commit -m "update package.json to use lodash 4.17.21" git push
Pour vérifier que « Hello World » ne peut pas extraire la version 4.17.21 de « lodash »
-
Exécutez le flux de travail avec la version non correspondante :
-
Passez à la CodeCatalyst console.
-
Dans le volet de navigation, choisissez CI/CD, puis Workflows.
-
À côté de
codecatalyst-package-workflow
, choisissez Actions, puis sélectionnez Exécuter.npm
package.json
recherche les dépendances et constate que la version 4.17.21 delodash
est requise par « Hello World ». npm recherche les dépendances aux emplacements suivants, dans l'ordre suivant :-
Dans l'image Docker en cours d'exécution de l'action. Il ne le trouve pas ici.
-
Dans le référentiel de CodeCatalyst packages. Il ne le trouve pas ici.
-
Dans le référentiel de la passerelle. Il ne le trouve pas ici.
-
Dans npmjs.com. Il le trouve ici.
Une fois que npm a trouvé la version 4.17.21 dans npmjs.com, il essaie de l'importer dans le référentiel de passerelle, mais comme vous avez configuré la passerelle pour bloquer les importations de
lodash
, l'importation n'a pas lieu.L'importation n'ayant pas lieu, le flux de travail échoue.
-
-
-
Vérifiez que le flux de travail a échoué :
-
Dans la notification verte en haut à droite, choisissez le lien vers la course. Le lien ressemble à
View Run-2345
. -
Dans le diagramme du flux de travail, RunHelloWorldAppcochez la case.
-
Développez le message du
npm install
journal.Le message suivant s'affiche :
[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
L'erreur indique que la version 4.17.21 est introuvable. Cela est normal car vous l'avez bloqué.
-
Pour débloquer les importations depuis npmjs.com
-
Dans le panneau de navigation, choisissez Packages.
-
Choisissez npm-publish-registry-gateway.
-
Sélectionnez
lodash
. -
En haut, choisissez Origin controls.
-
Sous Upstream, sélectionnez Autoriser.
-
Choisissez Enregistrer.
Vous avez maintenant débloqué les importations de.
lodash
Votre flux de travail peut désormais importer la version 4.17.21 de.
lodash
Pour vérifier que les importations depuis npmjs.com sont débloquées
-
Réexécutez votre flux de travail. Cette fois, le flux de travail devrait réussir car l'importation de la version 4.17.21 devrait désormais fonctionner. Pour réexécuter le flux de travail, procédez comme suit :
-
Choisissez CI/CD, puis Workflows.
-
À côté de
codecatalyst-package-workflow
, choisissez Actions, puis Exécuter. -
Dans la notification verte en haut à droite, choisissez le lien vers la course. Le lien ressemble à
View Run-3456
.Un diagramme de flux de travail apparaît, indiquant qui a lancé l'exécution et l'RunHelloWorldAppaction.
-
Choisissez la case RunHelloWorldAppd'action pour suivre la progression de l'action.
-
Développez le message du
npm list
journal et vérifiez qu'un message similaire au suivant apparaît :└── lodash@4.17.21
Ce message indique que
lodash
la version 4.17.21 a été téléchargée.
-
-
Vérifiez que la version 4.17.21 a été importée dans vos référentiels CodeCatalyst et ceux de la passerelle :
-
Dans le panneau de navigation, choisissez Packages.
-
Choisissez npm-public-registry-gateway.
-
Recherchez
lodash
et assurez-vous que la version est4.17.21
.Note
Bien que la version 4.17.20 ne soit pas répertoriée sur cette page, vous pouvez la trouver en choisissant
lodash
puis en choisissant Versions en haut de la page. -
Répétez ces étapes pour vérifier que la version 4.17.21 a été importée vers.
codecatalyst-package-repository
-
Nettoyage
Nettoyez les fichiers et les services utilisés dans ce didacticiel pour éviter de vous les faire facturer.
Pour nettoyer le didacticiel des packages
-
Supprimez le
codecatalyst-package-project
:-
Dans la CodeCatalyst console, accédez au
codecatalyst-package-project
projet si ce n'est pas déjà fait. -
Dans le volet de navigation, sélectionnez Paramètres du projet.
-
Choisissez Supprimer le projet
delete
, entrez et choisissez Supprimer le projet.CodeCatalyst supprime toutes les ressources du projet, y compris les référentiels de source, de passerelle et de CodeCatalyst packages. L'environnement de développement est également supprimé.
-
-
Supprimez le PAT jeton :
-
Choisissez votre nom d'utilisateur sur la droite, puis sélectionnez Mes paramètres.
-
Sous Jetons d'accès personnels, choisissez le jeton que vous avez créé dans ce didacticiel, puis choisissez Supprimer.
-
Dans ce didacticiel, vous avez appris à créer un flux de travail qui exécute une application qui extrait ses dépendances d'un référentiel de CodeCatalyst packages. Vous avez également appris à bloquer et à débloquer des packages pour les empêcher d'accéder à votre passerelle et à vos référentiels de CodeCatalyst packages.