View a markdown version of this page

Tutoriel : Créez et transférez une image Docker vers Amazon ECR avec CodePipeline (type V2) - AWS CodePipeline

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 : Créez et transférez une image Docker vers Amazon ECR avec CodePipeline (type V2)

Ce didacticiel vous aide à créer une action de génération CodePipeline qui s'exécute et transmet votre image Docker vers Amazon ECR après une modification de votre code source. Ce didacticiel explique également comment ajouter une action de déploiement Amazon ECS qui déploie votre image envoyée.

Important

Dans le cadre de la création d'un pipeline dans la console, un compartiment d'artefacts S3 sera utilisé par CodePipeline les artefacts. (Ce compartiment est différent du compartiment utilisé pour une action source S3.) Si le compartiment d'artefacts S3 se trouve dans un compte différent de celui de votre pipeline, assurez-vous que le compartiment d'artefacts S3 appartient Comptes AWS à une société sûre et fiable.

Note

Ce didacticiel concerne l'action de ECRBuildAndPublish création d'un CodePipeline pipeline avec un référentiel GitHub source et une action standard Amazon ECS pour le déploiement sur un cluster Amazon ECS. Pour un didacticiel utilisant un pipeline avec un référentiel d'images ECR comme source d'une action de CodeDeploy blue/green déploiement Amazon ECS CodePipeline, consultezTutoriel : Création d'un pipeline avec une source et ECS-to-CodeDeploy un déploiement Amazon ECR.

Important

Cette action utilise le CodeBuild calcul CodePipeline géré pour exécuter des commandes dans un environnement de génération. L'exécution de l'action des commandes entraînera des frais distincts dans AWS CodeBuild.

Conditions préalables

Avant de pouvoir créer votre pipeline de déploiement continu à l'aide de ce didacticiel, vous devez avoir mis en place certaines ressources. Voici ce dont vous avez besoin pour commencer :

Note

Toutes ces ressources devraient être créées au sein de la même AWS région.

  • Un référentiel de contrôle de source (utilisé dans ce didacticiel GitHub) dans lequel vous allez ajouter les éléments suivants pour ce didacticiel :

    • À l'étape 1, vous allez ajouter un exemple de Dockerfile à votre référentiel source en tant qu'artefact d'entrée pour l'action de ECRBuildAndPublish génération. CodePipeline

    • À l'étape 2, vous allez ajouter un exemple de fichier imagedefinitions.json à votre référentiel source comme condition préalable à l'action de déploiement standard d'Amazon ECS dans. CodePipeline

  • Un référentiel d'images Amazon ECR qui contient une image que vous avez créée à partir de votre Dockerfile. Pour plus d'informations, consultez la section Création d'un référentiel et diffusion d'une image dans le guide de l'utilisateur d'Amazon Elastic Container Registry.

  • Cluster et service Amazon ECS créés dans la même région que le référentiel d'images. Pour plus d'informations, consultez Création d'un cluster et création d'un service dans le guide du développeur Amazon Elastic Container Service.

Dès lors que ces prérequis sont respectés, vous pouvez commencer à créer votre pipeline de déploiement continu à l'aide du didacticiel.

Étape 1 : ajoutez un Dockerfile à votre référentiel source

Ce didacticiel utilise l' ECRBuildAndPublish action pour créer votre image Docker et la transmettre à Amazon ECR. L'action de calcul gérée est CodePipeline utilisée CodeBuild pour exécuter les commandes pour la connexion ECR et le push d'image. Il n'est pas nécessaire d'ajouter un buildspec.yml fichier à votre référentiel de code source pour indiquer CodeBuild comment procéder. Pour cet exemple, vous ne fournissez le Dockerfile dans votre référentiel que comme suit.

Collez cet exemple de texte pour créer votre Dockerfile fichier. Cet exemple de Dockerfile est identique à l'exemple utilisé dans les instructions relatives à l'image ECR dans les prérequis.

FROM public.ecr.aws/amazonlinux/amazonlinux:latest # Install dependencies RUN yum update -y && \ yum install -y httpd # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo 'mkdir -p /var/run/httpd' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/httpd' >> /root/run_apache.sh && \ echo '/usr/sbin/httpd -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh
Pour ajouter un Dockerfile fichier dans votre référentiel source
  1. Ouvrez un éditeur de texte, puis copiez et collez le Dockerfile ci-dessus dans un nouveau fichier.

  2. Validez votre fichier Dockerfile et transmettez-le à votre référentiel source.

    1. Ajoutez le fichier.

      git add .
    2. Validez la modification.

      git commit -m "Adding Dockerfile."
    3. Transmettez la validation.

      git push

    Veillez à placer le fichier à la racine de votre dépôt.

    / Dockerfile

Étape 2 : ajoutez un fichier imagedefinitions.json à votre référentiel source

Ce didacticiel utilise l'action de déploiement standard Amazon ECS CodePipeline pour déployer votre conteneur sur votre cluster Amazon ECS. L'action de déploiement standard d'Amazon ECS nécessite un fichier imagedefinitions.json contenant le nom et l'URI de votre image. Pour plus d'informations sur le fichier imagedefinitions.json, consultez. fichier imagedefinitions.json pour les actions de déploiement standard d'Amazon ECS

Collez cet exemple de texte pour créer votre imagedefinitions.json fichier. Utilisez le nom figurant dans votre Dockerfile, par exemplehello-world, et utilisez l'URI de votre référentiel Amazon ECR dans lequel l'image est stockée.

[ { "name": "hello-world", "imageUri": "ACCOUNT-ID.dkr.ecr.us-east-1.amazonaws.com/actions/image-repo" } ]
Pour ajouter un imagedefinitions.json fichier dans votre référentiel source
  1. Ouvrez un éditeur de texte, puis copiez et collez l'exemple ci-dessus dans un nouveau fichier.

  2. Validez votre fichier imagedefinitions.json et transmettez-le à votre référentiel source.

    1. Ajoutez le fichier.

      git add .
    2. Validez la modification.

      git commit -m "Adding imagedefinitions.json."
    3. Transmettez la validation.

      git push

    Veillez à placer le fichier à la racine de votre dépôt.

    / imagedefinitions.json

Étape 3 : Création de votre pipeline

Utilisez l' CodePipeline assistant pour créer les étapes de votre pipeline et connecter votre référentiel source.

Pour créer le pipeline
  1. Ouvrez la CodePipeline console à l'adresse https://console.aws.amazon.com/codepipeline/.

  2. Sur la page Bienvenue, la page Démarrez ou la page Pipelines, choisissez Créer un pipeline.

  3. Sur la page Étape 1 : Choisissez l'option de création, sous Options de création, choisissez l'option Créer un pipeline personnalisé. Choisissez Suivant.

  4. À l'étape 2 : choisissez les paramètres du pipeline, dans Nom du pipeline, entrezMyPipeline.

  5. CodePipeline fournit des pipelines de type V1 et V2, dont les caractéristiques et le prix diffèrent. Le type V2 est le seul que vous pouvez choisir dans la console. Pour plus d’informations, consultez types de pipeline. Pour plus d'informations sur la tarification de CodePipeline, consultez la section Tarification.

  6. Dans Rôle de service, choisissez Nouveau rôle de service pour permettre CodePipeline de créer un rôle de service dans IAM.

  7. Laissez les paramètres sous Advanced settings (Paramètres avancés) à leurs valeurs par défaut, puis choisissez Suivant.

  8. Sur la page Étape 3 : Ajouter une étape source, ajoutez une étape source :

    1. Dans Source provider, choisissez GitHub (via GitHub App).

    2. Sous Connexion, choisissez une connexion existante ou créez-en une nouvelle. Pour créer ou gérer une connexion pour votre action GitHub source, consultezGitHub connexions.

    3. Dans Nom du référentiel, choisissez le nom de votre référentiel GitHub .

    4. Dans Branche par défaut, choisissez la branche que vous souhaitez spécifier lorsque le pipeline est démarré manuellement ou avec un événement source qui n'est pas une balise Git. Si la source de la modification n'est pas le déclencheur ou si l'exécution d'un pipeline a été démarrée manuellement, la modification utilisée sera le commit HEAD de la branche par défaut.

    Choisissez Suivant.

  9. Sur la page Étape 4 : Ajouter une étape de construction, choisissez Autres fournisseurs de build, puis choisissez ECRBuildAndPublish.

    Ajoutez une action de création Amazon ECR à votre pipeline.
    1. Pour le nom du référentiel ECR, choisissez votre référentiel d'images.

    2. Choisissez Suivant.

  10. À l'étape 5 : Ajouter une phase de test, choisissez Ignorer la phase de test, puis acceptez le message d'avertissement en choisissant de nouveau Ignorer.

    Choisissez Suivant.

  11. Sur la page Étape 6 : Ajouter une phase de déploiement, choisissez Ignorer l'étape de déploiement. Vous allez ajouter l'action ECS à l'étape suivante.

  12. Sur la page Étape 7 : Révision, passez en revue la configuration de votre pipeline et choisissez Créer un pipeline pour créer le pipeline.

  13. Modifiez votre pipeline pour ajouter l'action de déploiement Amazon ECS à votre pipeline :

    1. Dans le coin supérieur droit, choisissez Modifier.

    2. Au bas du diagramme, choisissez + Ajouter une étape. Dans le champ Nom de l'étape, saisissez un nom, tel que Deploy.

    3. Choisissez + Ajouter un groupe d'actions.

    4. Dans Nom de l'action, entrez un nom.

    5. Dans Action provider, choisissez Amazon ECS. Acceptez la région du pipeline comme Région par défaut.

    6. Dans Artefacts d'entrée, choisissez l'artefact d'entrée de l'étape source, par exempleSourceArtifact.

    7. Pour Nom du cluster, choisissez le cluster Amazon ECS dans lequel votre service est exécuté.

    8. Dans Nom du service, choisissez le service à mettre à jour.

    9. Choisissez Enregistrer.

    10. Dans l'étape que vous modifiez, choisissez Effectué. Dans le volet AWS CodePipeline , choisissez Enregistrer puis Enregistrer dans le message d'avertissement.

    11. Pour soumettre vos modifications et lancer la génération d'un pipeline, choisissez Changement de version, puis Publication.

  14. Une fois le pipeline exécuté, visualisez la structure et l'état du pipeline.

    Schéma de console illustrant un pipeline exécuté avec succès avec l'action de génération Amazon ECR et l'action de déploiement Amazon ECS ajoutées à votre pipeline.
  15. Une fois le pipeline exécuté avec succès, choisissez Afficher les détails pour afficher les journaux de l'action afin d'afficher le résultat de l'action de calcul gérée.

    Consultez les journaux relatifs à l'action de création d'Amazon ECR dans votre pipeline.
  16. Résolvez les éventuelles actions qui ont échoué. Par exemple, l'action de déploiement d'ECS peut échouer si le fichier imagedefinitions.json ne se trouve pas dans le référentiel source. Voici un exemple du message d'erreur qui s'affiche lorsque le fichier imagedefinitions.json est manquant.

    Consultez les journaux relatifs à l'action de création d'Amazon ECR dans votre pipeline.

Étape 4 : Test de votre pipeline

Votre pipeline doit disposer de tous les éléments nécessaires pour exécuter un déploiement AWS continu natif de bout en bout. À présent, testez sa fonctionnalité en transmettant une modification de code à votre référentiel source.

Pour tester votre pipeline
  1. Apportez une modification de code au référentiel source que vous avez configuré, validez-la, puis transmettez-la.

  2. Ouvrez la CodePipeline console à l'adresse https://console.aws.amazon.com/codepipeline/.

  3. Choisissez votre pipeline dans la liste.

  4. Observez la progression du pipeline dans ses différentes phases. Votre pipeline devrait être terminé et votre action redirige l'image Docker vers ECR qui a été créée à partir de votre modification de code.