Dans ce didacticiel, vous apprendrez à créer un pipeline de mise à disposition de logiciel automatisé capable de déployer un exemple d'application dynamique. Vous créerez le pipeline en utilisant AWS CodePipeline, un service qui crée, teste et déploie votre code dès que ce dernier est modifié. Vous utiliserez votre compte GitHub, un compartiment Amazon Simple Storage Service (S3) ou un référentiel AWS CodeCommit comme emplacement source pour le code de l'exemple d'application. Vous utiliserez également AWS Elastic Beanstalk comme cible de déploiement pour l'exemple d'application. Une fois terminé, votre pipeline pourra détecter les modifications apportées au référentiel source contenant l'exemple d'application, pour ensuite mettre à jour automatiquement votre exemple d'application dynamique.

Le déploiement continu permet de déployer les révisions automatiquement vers un environnement de production, sans approbation explicite de la part d'un développeur. Le processus de publication de logiciel est alors entièrement automatisé.

Toutes les étapes de ce didacticiel sont éligibles à une offre gratuite.

Gérez vos ressources AWS

Connectez-vous à la console

Votre pipeline de déploiement continu aura besoin d'un environnement cible contenant des serveurs virtuels ou des instances Amazon EC2, dans lequel l'exemple de code sera déployé. Vous préparerez cet environnement avant de créer le pipeline.


a. Pour simplifier la procédure d'installation et de configuration d'instances EC2 pour ce didacticiel, vous lancerez un exemple d'environnement grâce à AWS Elastic Beanstalk. Elastic Beanstalk permet d'héberger vos applications web en toute simplicité sans avoir à lancer, configurer ou faire fonctionner des serveurs virtuels vous-même. Il met en service et pilote automatiquement l'infrastructure (par ex. des serveurs virtuels, des équilibreurs de charge, etc.) et vous fournit la pile d'application (par ex. système d'exploitation, langue et infrastructure, serveur web et d'applications, etc.).


b. Choisissez PHP dans le menu déroulant, puis cliquez sur Launch Now.

Remarque : Si vous avez déjà créé une application Elastic Beanstalk, cliquez sur : Create New Application dans l'angle supérieur droit. Attribuez un nom à l'application et créez un environnement de serveur web. Sélectionnez PHP comme plateforme et Single Instance comme type d'environnement. Si vous prévoyez de vous connecter à distance à vos instances, sélectionnez une paire de clés. Dans le cas contraire, conservez les valeurs par défaut pour les autres options et créez l'environnement pour votre pipeline de déploiement continu.

(cliquez pour zoomer)


c. Elastic Beanstalk commencera à créer un exemple d'environnement dans lequel vous déploierez votre application. Il créera une instance Amazon EC2, un groupe de sécurité, un groupe Auto Scaling, un compartiment Amazon S3, des alarmes Amazon CloudWatch et un nom de domaine pour votre application.

Remarque : cette opération prendra plusieurs minutes

(cliquez pour zoomer)

Au cours de cette étape, vous extrairez une copie du code de l'exemple d'application, puis vous choisirez une source pour héberger le code. Le pipeline prend le code de la source, puis effectue des actions dessus.

Vous pouvez utiliser l'une de ces trois options comme source : un référentiel GitHub, un compartiment Amazon S3 ou un référentiel AWS CodeCommit. Sélectionnez votre préférence et appliquez la procédure ci-après :

 

  • GitHub

    a. Si vous souhaitez utiliser votre compte GitHub :

    (cliquez pour zoomer)

  • Amazon S3

    a. SI vous prévoyez d'utiliser Amazon S3 comme source, vous extrairez l'exemple de code du référentiel AWS GitHub, vous l'enregistrerez sur votre ordinateur, puis vous le chargerez dans un compartiment Amazon S3.

    (cliquez pour zoomer)


    b. Enregistrez les fichiers source sur votre ordinateur :

    • Cliquez sur le fichier nommé aws-codepipeline-s3-aws-codedeploy_linux.zip 
    • Cliquez sur View Raw.
    • Enregistrez l'exemple de fichier sur votre ordinateur local.

    (cliquez pour zoomer)


    c. Cliquez ici pour ouvrir la console Amazon S3 et créer votre compartiment Amazon S3 :

    • Cliquez sur Create Bucket
    • Bucket Name : tapez un nom unique pour votre compartiment, par exemple awscodepipeline-demobucket-variables.  Tout nom de compartiment dans Amazon S3 devant être unique, utilisez l'un des vôtres, et non pas le nom indiqué à titre d'exemple.
    • Region : Dans le menu déroulant, sélectionnez la région où vous allez créer le pipeline, par exemple US Standard
    • Cliquez sur Create.

    (cliquez pour zoomer)


    d. La console affiche le compartiment qui vient d'être créé, qui est vide.

    • Cliquez sur Propriétés.
    • Développez Versioning, puis sélectionnez Enable Versioning. Lorsque la gestion des versions est activée, Amazon S3 enregistre chaque version de chaque objet dans le compartiment.

    (cliquez pour zoomer)


    e. Vous allez maintenant charger l'exemple de code dans le compartiment Amazon S3. 

    • Cliquez sur Upload.
    • Suivez les instructions à l'écran pour charger le fichier .zip contenant l'exemple de code que vous avez téléchargé à partir de GitHub.

    (cliquez pour zoomer)

  • AWS CodeCommit

    a. SI vous prévoyez d'utiliser AWS CodeCommit comme source, vous extrairez l'exemple de code du référentiel AWS GitHub, vous l'enregistrerez sur votre ordinateur, puis vous le chargerez dans un référentiel AWS CodeCommit.

    (cliquez pour zoomer)


    b. Enregistrez les fichiers source sur votre ordinateur :

    • Sélectionnez le fichier nommé aws-codepipeline-s3-aws-codedeploy_linux.zip 
    • Sélectionnez View Raw.
    • Enregistrez l'exemple de fichier sur votre ordinateur local.

    (cliquez pour zoomer)


    d. Cliquez ici pour ouvrir la console AWS CodeCommit et sélectionnez Get Started.

    (cliquez pour zoomer)


    e. Sur la page Create new repository :

    • Repository name : saisissez PipelineRepo.
    • Sélectionnez Create repository.

    (cliquez pour zoomer)


    f. Connectez-vous à votre référentiel, puis ajoutez-y une copie de l'exemple de fichier.  Pour obtenir des instructions, consultez Connect to an AWS CodeCommit Repository.

Au cours de cette étape, vous allez créer et configurer un pipeline simple avec deux actions : source et déployer. Vous fournirez CodePipeline avec les emplacements de votre référentiel source et de votre environnement de déploiement.


a. Cliquez ici pour ouvrir la console AWS CodePipeline.

  • Sur la page Welcome, cliquez sur Create pipeline
  • Si vous utilisez AWS CodePipeline pour la première fois, une page d'introduction s'affiche au lieu de la page Welcome. Cliquez sur Get started.

(cliquez pour zoomer)


b. Sur la page Step 1: Name :

  • Pipeline name :  entrez le nom pour votre pipeline, DemoPipeline.
  • Cliquez sur Next Step.

Remarque : Une fois le pipeline créé, vous ne pouvez plus modifier son nom.

(cliquez pour zoomer)


c. Sur la page Step 2: Source, sélectionnez l'emplacement de la source que vous avez sélectionnée et suivez la procédure ci-après :

  • GitHub

    Fournisseur de source : GitHub

    • Dans la section Connect to GitHub, cliquez sur Connect to GitHub.
    • Une nouvelle fenêtre de navigateur s'ouvre, qui vous permet de vous connecter à GitHub. Si vous y êtes invité, saisissez vos informations d'identification GitHub. 
    • Vous serez invité à autoriser l'accès aux applications à votre compte. Choisissez Authorize application.

    (cliquez pour zoomer)


    Précisez le référentiel et la branche :

    • Référentiel : dans la liste déroulante, choisissez le référentiel GitHub que vous souhaitez utiliser en tant qu'emplacement de la source pour votre pipeline. Cliquez sur le référentiel dupliqué dans votre compte GitHub contenant l'exemple de code nommé aws-codepipeline-s3-aws-codedeploy_linux
    • Branch : choisissez dans la liste déroulante la branche que vous souhaitez utiliser, la principale.
    • Cliquez sur Next Step.

    (cliquez pour zoomer)

  • Amazon S3

    Fournisseur de source : Amazon S3.

    • Amazon S3 location :, saisissez le nom du compartiment Amazon S3 que vous avez créé, suivi du fichier d'exemple que vous avez copié dans ce compartiment (aws-codepipeline-s3-aws-codedeploy_linux.zip). Par exemple, si vous avez nommé votre compartiment awscodepipeline-demobucket-variable, vous tapez : s3://awscodepipeline-demobucket-variable/aws-codepipeline-s3-aws-codedeploy_linux.zip.
    • Cliquez sur Next Step.

    (cliquez pour zoomer)

  • AWS CodeCommit

    Fournisseur de source : AWS CodeCommit.

    • Repository name : choisissez le nom de votre référentiel AWS CodeCommit. 
    • Branch name, choisissez le nom de la branche qui contient le fichier d'exemple.
    • Cliquez sur Next Step.

    (cliquez pour zoomer)


d. Un véritable pipeline de déploiement continu nécessite une étape de génération, au cours de laquelle le code est compilé et l'unité testée. CodePipeline vous permet de connecter votre fournisseur de génération à votre pipeline. Cependant, vous passez l'étape de génération au cours de ce didacticiel.

  • Sur la page Step 3: Build, choisissez No Build.
  • Cliquez sur Next Step.

 

(cliquez pour zoomer)


e. Sur la page Step 4: Beta :

  • Deployment provider : cliquez sur AWS Elastic Beanstalk. 
  • Application name : cliquez sur My First Elastic Beanstalk Application. 
  • Environment name : cliquez sur Default-Environment.
  • Cliquez sur Next Step.

Remarque : Le nom « Bêta » est simplement le nom donné par défaut à cette étape du pipeline, tout comme « Source » était le nom donné à la première étape du pipeline.

(cliquez pour zoomer)


f. Sur la page Step 5: Service Role :

  • Service Role : cliquez sur Create role.
  • Vous serez redirigé vers une page de la console IAM qui décrit le rôle AWS-CodePipeline-Service qui sera créé. Cliquez sur Allow
  • Après avoir créé le rôle, vous êtes redirigé vers la page Step 5: Service Role, où AWS-CodePipeline-Service apparaît dans Role name. Cliquez sur Next Step.

Remarque : La création d'un rôle de service n'est requise que la première fois où vous créez un pipeline dans AWS CodePipeline. Si un rôle de service a déjà été créé, vous pourrez le choisir dans le menu déroulant des rôles. Etant donné que la liste déroulante affiche tous les rôles de service IAM associés à votre compte, si vous choisissez un nom différent de celui par défaut, assurez-vous qu'il soit reconnaissable en tant que rôle de service pour AWS CodePipeline.

(cliquez pour zoomer)

Dans cette étape, vous allez lancer votre pipeline. Une fois votre pipeline créé, il s'exécute automatiquement. Dans un premier temps, il détecte l'exemple de code d'application dans votre emplacement source, il regroupe les fichiers, puis les transfère vers la deuxième étape que vous avez définie. Au cours de cette étape, il transmet le code à Elastic Beanstalk, qui contient l'instance EC2 qui hébergera votre code. Elastic Beanstalk gère le déploiement du code dans l'instance EC2.


a. Sur la page Step 6: Review, vérifiez les informations puis cliquez sur Create pipeline.

(cliquez pour zoomer)


b. Une fois votre pipeline créé, la page d'état du pipeline s'ouvre et le pipeline commence à s'exécuter automatiquement. Vous pouvez voir l'état d'avancement ainsi que les messages de réussite et d'échec à mesure que le pipeline effectue chaque action.

Pour vérifier que votre pipeline s'est exécuté correctement, surveillez son avancement à chaque étape. L'état de chaque étape passe de No executions yet à In Progress, puis affiche soit Succeeded soit Failed. Le pipeline doit terminer la première exécution en quelques minutes.

(cliquez pour zoomer)


c. Dans la zone d'état de l'étape Bêta, cliquez sur AWS Elastic Beanstalk

(cliquez pour zoomer)


d. La console AWS Elastic Beanstalk s'ouvre et présente les détails du déploiement.

  • Cliquez sur l'environnement que vous avez créé précédemment, nommé Default-Environment

(cliquez pour zoomer)


e. Cliquez sur l'URL qui apparaît dans la partie supérieure droite de la page pour afficher l'exemple de site web que vous avez déployé.

(cliquez pour zoomer)

Au cours de cette étape, vous allez réviser l'exemple de code, puis valider les modifications dans votre référentiel. CodePipeline détecte l'exemple de code mis à jour puis commence automatiquement à le déployer dans votre instance EC2 via Elastic Beanstalk. 

Notez que l'exemple de page web que vous avez déployé fait référence à AWS CodeDeploy, un service qui automatise les déploiements de code. Dans CodePipeline, CodeDeploy constitue une alternative à l'utilisation d'Elastic Beanstalk pour les actions de déploiement. Actualisons l'exemple de code afin qu'il indique que vous l'avez déployé avec Elastic Beanstalk.

  • GitHub

    a. Examinez la copie du référentiel que vous avez dupliqué dans GitHub.

    • Ouvrez index.html
    • Sélectionnez l'icône Edit.

    (cliquez pour zoomer)


    b. Mettez à jour la page Web en effectuant un copier-coller du texte suivant à la ligne 30 : 

    Vous avez créé un pipeline qui a extrait cette application source de GitHub et vous l'avez déployé dans une instance Amazon EC2 au moyen d'AWS Elastic Beanstalk. Vous vous rapprochez d'une étape de l'adoption du déploiement continu !

    (cliquez pour zoomer)


    c. Validez la modification dans le référentiel.

    (cliquez pour zoomer)

  • Amazon S3

    a. Sur votre bureau, ouvrez le fichier compressé que vous avez téléchargé nommé aws-codepipeline-s3-aws-codedeploy_linux.zip.


    b. Modifiez le code de l'exemple d'application web :

    • Extrayez index.html de l'archive et ouvrez-le au moyen de l'éditeur de texte de votre choix. 
    • Modifiez le texte d'en-tête après « Félicitations ! » en ajoutant :

    « Vous avez créé un pipeline qui a extrait cette application source d'Amazon S3 et vous l'avez déployé dans une instance Amazon EC2 au moyen d'AWS Elastic Beanstalk. Vous vous rapprochez d'une étape de l'adoption du déploiement continu ! »

    • Copiez le fichier index.html mis à jour à nouveau dans aws-codepipeline-s3-aws-codedeploy_linux.zip et remplacez l'ancienne version d'index.html.

    (cliquez pour zoomer)


    c. Chargez à nouveau le fichier modifié dans votre compartiment Amazon S3 :

    • Retournez au compartiment S3 que vous avez créée plus tôt. 
    • Chargez le fichier aws-codepipeline-s3-aws-codedeploy_linux.zip mis à jour dans le compartiment. 

    Remarque : puisque vous avez activé la gestion des versions lorsque vous avez créé le compartiment S3 pour la première fois, S3 enregistre une copie de chaque version de vos fichiers.

    (cliquez pour zoomer)

  • AWS CodeCommit

    a. Ouvrez le fichier compressé contenant l'exemple de code que vous avez téléchargé nommé aws-codepipeline-s3-aws-codedeploy_linux.zip.


    b. Modifiez le code de l'exemple d'application web :
     
    • Extrayez index.html de l'archive et ouvrez-le au moyen de l'éditeur de texte de votre choix. 
    • Puis, modifiez le texte d'en-tête après « Félicitations! » en ajoutant :

    Vous avez créé un pipeline qui a extrait cette application source d'AWS CodeCommit et vous l'avez déployé dans une instance Amazon EC2 au moyen d'AWS Elastic Beanstalk. Vous vous rapprochez d'une étape de l'adoption du déploiement continu !

    (cliquez pour zoomer)


    c. Validez et transmettez le fichier zip mis à jour à votre référentiel CodeCommit.


d. Retournez au pipeline dans la console CodePipeline. Dans quelques minutes, vous verrez la Source devenir bleue, ce qui indique que le pipeline a détecté les modifications que vous avez apportées à votre référentiel source. Le code mise à jour est ensuite transféré automatiquement vers Elastic Beanstalk.

  • Une fois que l'état du pipeline affiche Succeeded, dans la zone d'état de l'étape Beta, cliquez sur AWS Elastic Beanstalk.

(cliquez pour zoomer)


e. La console AWS Elastic Beanstalk s'ouvre et présente les détails du déploiement. Sélectionnez l'environnement que vous avez créé précédemment, nommé Default-Environment.

(cliquez pour zoomer)


f. Cliquez sur l'URL qui apparaît dans la partie supérieure droite de la page pour afficher à nouveau l'exemple de site web que vous avez déployé.  Votre texte a été mis à jour automatiquement via le pipeline de déploiement continu.

 

(cliquez pour zoomer)

Afin d'éviter des frais à l'avenir, vous allez supprimer toutes les ressources que vous avez lancées au cours de ce didacticiel, à savoir le pipeline, l'application Elastic Beanstalk et la source que vous avez configurée pour héberger le code.  


a. Vous devez d'abord supprimer votre pipeline :

  • Dans la vue du pipeline, cliquez sur Edit
  • Cliquez sur Delete.
  • Saisissez le nom de votre pipeline, puis cliquez sur Delete.

(cliquez pour zoomer)


b. Vous devez ensuite supprimer votre application Elastic Beanstalk :

  • Accédez à la console Elastic Beanstalk. 
  • Cliquez sur Actions.
  • Cliquez ensuite sur Terminate Environment.

(cliquez pour zoomer)

  • Amazon S3

    c. Si vous avez créé un compartiment S3 pour ce didacticiel, supprimez-le :

    • Accédez à la console S3. 
    • Cliquez avec le bouton droit sur le nom du compartiment, puis sélectionnez Delete Bucket
    • Lorsqu'un message de confirmation apparaît, saisissez le nom du compartiment, puis cliquez sur Delete.

    (cliquez pour zoomer)

  • AWS CodeCommit

    c. Si vous avez créé un référentiel AWS CodeCommit pour ce didacticiel, accédez à la console CodeCommit et supprimez le référentiel que vous avez créé :

    (cliquez pour zoomer)


    c. Dans le volet de navigation, sélectionnez Settings.

    • Cliquez sur Delete Repository.
    • Une fenêtre de confirmation s'ouvre. Saisissez le nom de votre référentiel, puis cliquez sur Delete.

    (cliquez pour zoomer)

Vous avez créé un pipeline de publication logicielle automatisée avec AWS CodePipeline. Grâce à CodePipeline, vous avez créé un pipeline qui utilise GitHub, Amazon S3 ou AWS CodeCommit comme emplacement source du code de l'application, puis qui déploie le code dans une instance Amazon EC2 gérée par AWS Elastic Beanstalk. Votre pipeline déploiera automatiquement votre code à chaque modification. Vous vous rapprochez d'une étape de l'adoption du déploiement continu !

Maintenant que vous appris à créer un pipeline simple grâce à AWS CodePipeline, vous pouvez en savoir plus en consultant les ressources suivantes.

  • Créez un pipeline plus avancé à quatre étapes en suivant ce guide. Ce pipeline utilise un référentiel GitHub pour votre source, un serveur de génération Jenkins pour générer et tester le projet, et une application AWS CodeDeploy pour déployer le code généré sur un serveur intermédiaire.
  • Développez rapidement un pipeline à quatre étapes grâce à un serveur de génération Jenkins en utilisant notre kit de démarrage du pipeline.
  • En savoir plus sur la livraison continue.