Didacticiel : Création d'un pipeline à quatre étapes - 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.

Didacticiel : Création d'un pipeline à quatre étapes

Maintenant que vous avez créé votre premier pipeline dans Didacticiel : Création d'un pipeline simple (compartiment S3) ou Tutoriel : Création d'un pipeline simple (CodeCommitréférentiel), vous pouvez commencer à créer des pipelines plus complexes. Ce didacticiel vous explique comment créer un pipeline en quatre étapes qui utilise un GitHub référentiel pour votre source, un serveur de build Jenkins pour créer le projet et une CodeDeploy application pour déployer le code généré sur un serveur intermédiaire. Le schéma suivant montre le pipeline initial en trois étapes.

Schéma illustrant l'étape source avec l'action source, une phase de génération avec l'action Jenkins et une étape de déploiement avec l'action de déploiement.

Une fois le pipeline créé, vous allez le modifier pour ajouter une étape comprenant une action de test pour tester le code, également à l'aide de Jenkins.

Avant de pouvoir créer ce pipeline, vous devez configurer les ressources requises. Par exemple, si vous souhaitez utiliser un GitHub référentiel pour votre code source, vous devez le créer avant de pouvoir l'ajouter à un pipeline. Dans le cadre de la configuration, ce didacticiel vous guide dans la configuration de Jenkins sur une instance EC2, à des fins de démonstration.

Important

La plupart des actions que vous ajoutez à votre pipeline dans cette procédure impliquent AWS des ressources que vous devez créer avant de créer le pipeline. AWS les ressources pour vos actions source doivent toujours être créées dans la même AWS région où vous créez votre pipeline. Par exemple, si vous créez votre pipeline dans la région USA Est (Ohio), votre CodeCommit référentiel doit se trouver dans la région USA Est (Ohio).

Vous pouvez ajouter des actions interrégionales lorsque vous créez votre pipeline. AWS les ressources pour les actions interrégionales doivent se trouver dans la même AWS région que celle où vous prévoyez d'exécuter l'action. Pour plus d’informations, consultez Ajouter une action interrégionale dans CodePipeline.

Avant de commencer ce didacticiel, assurez-vous de réunir les prérequis généraux indiqués dans Commencer avec CodePipeline.

Étape 1 : Vérifier les conditions préalables

Pour intégrer Jenkins, vous devez AWS CodePipeline installer le CodePipeline plugin pour Jenkins sur n'importe quelle instance de Jenkins que vous souhaitez utiliser. CodePipeline Vous devez également configurer un utilisateur ou un rôle IAM dédié à utiliser pour les autorisations entre votre projet Jenkins et. CodePipeline Le moyen le plus simple d'intégrer Jenkins CodePipeline consiste à installer Jenkins sur une instance EC2 qui utilise un rôle d'instance IAM que vous avez créé pour l'intégration de Jenkins. Afin que les liens des actions Jenkins du pipeline soient bien connectés, vous devez configurer les paramètres du pare-feu et de proxy sur le serveur ou l'instance EC2 pour autoriser les connexions entrantes sur le port utilisé par votre projet Jenkins. Assurez-vous d'avoir configuré Jenkins afin d'authentifier les utilisateurs et d'appliquer le contrôle d'accès avant d'autoriser les connexions sur ces ports (par exemple, 443 et 8443 si vous avez sécurisé Jenkins de sorte à ce qu'il n'utilise que des connexions HTTPS, ou 80 et 8080 si vous autorisez les connexions HTTP). Pour plus d'informations, consultez Sécurisation de Jenkins.

Note

Ce didacticiel utilise un modèle de code et configure les étapes de génération qui convertissent ce modèle, de Haml à HTML. Vous pouvez télécharger l'exemple de code open source depuis le GitHub référentiel en suivant les étapes décrites dansCopier ou cloner l'échantillon dans un GitHub référentiel. Vous aurez besoin de l'échantillon complet dans votre GitHub dépôt, et pas seulement du fichier .zip.

Ce didacticiel présume également que :

  • Vous êtes familiarisé avec l'installation et la gestion de Jenkins, ainsi qu'avec la création de projets Jenkins.

  • Vous avez installé Rake et le gem Haml pour Ruby sur le même ordinateur ou la même instance qui héberge votre projet Jenkins.

  • Vous avez défini les variables requises de l'environnement système afin que les commandes Rake puissent être exécutées à partir du terminal ou de la ligne de commande (par exemple, sur les systèmes Windows, modifiez la variable PATH pour inclure le répertoire où vous avez installé Rake).

Copier ou cloner l'échantillon dans un GitHub référentiel

Pour cloner l'échantillon et le transférer vers un GitHub référentiel
  1. Téléchargez l'exemple de code depuis le GitHub référentiel ou clonez les référentiels sur votre ordinateur local. Il y a deux modèles de modules :

  2. Dans le référentiel, choisissez Fork pour cloner le modèle de référentiel dans un référentiel de votre compte Github. Pour plus d'informations, consultez la GitHubdocumentation.

Créez un rôle IAM à utiliser pour l'intégration de Jenkins

Il est recommandé d'envisager de lancer une instance EC2 pour héberger votre serveur Jenkins et d'utiliser un rôle IAM pour accorder à l'instance les autorisations requises pour interagir avec. CodePipeline

  1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le panneau de navigation de la console IAM, choisissez Rôles, puis Créer un rôle.

  3. Sous Select type of trusted entity (Sélectionner le type d'entité approuvée), choisissez Service AWS. Sous Choose the service that will use this role (Choisir le service qui utilisera ce rôle), choisissez EC2. Sous Select your use case (Sélectionner votre cas d'utilisation), choisissez EC2.

  4. Sélectionnez Next: Permissions (Étape suivante : autorisations). Sur la page Attach permissions policies (Attacher des stratégies d'autorisations), sélectionnez la stratégie gérée AWSCodePipelineCustomActionAccess, puis choisissez Next: Tags (Suivant : balises). Choisissez Suivant : vérification.

  5. Sur la page Révision, dans Nom du rôle, entrez le nom du rôle à créer spécifiquement pour l'intégration de Jenkins (par exemple, JenkinsAccess), puis choisissez Créer un rôle.

Lorsque vous créez l'instance EC2 sur laquelle vous allez installer Jenkins, à l'étape 3 : Configuration des détails de l'instance, assurez-vous de choisir le rôle de l'instance (par exemple, JenkinsAccess).

Pour plus d'informations sur les rôles d'instance et Amazon EC2, consultez les sections Rôles IAM pour Amazon EC2, Utilisation des rôles IAM pour accorder des autorisations aux applications exécutées sur des instances Amazon EC2 et Création d'un rôle pour déléguer des autorisations à un. Service AWS

Installation et configuration de Jenkins et du CodePipeline plugin pour Jenkins

Pour installer Jenkins et le CodePipeline plugin pour Jenkins
  1. Créez une instance EC2 dans laquelle vous installerez Jenkins, et dans Étape 3 : Configuration des détails de l'instance, assurez-vous de choisir le rôle d'instance que vous avez créé (par exemple, JenkinsAccess). Pour plus d'informations sur la création d'instances EC2, consultez Lancer une instance Amazon EC2 dans le guide de l'utilisateur Amazon EC2.

    Note

    Si vous souhaitez déjà utiliser des ressources Jenkins, vous pouvez le faire, mais vous devez créer un utilisateur IAM spécial, appliquer la politique AWSCodePipelineCustomActionAccess gérée à cet utilisateur, puis configurer et utiliser les informations d'identification d'accès de cet utilisateur sur votre ressource Jenkins. Si vous souhaitez que l'interface utilisateur Jenkins fournisse les informations d'identification, configurez Jenkins de sorte à uniquement autoriser les connexions HTTPS. Pour plus d’informations, consultez Résolution des problèmes CodePipeline.

  2. Installez Jenkins sur l'instance EC2. Pour plus d'informations, consultez la documentation de Jenkins relative à l’installation de Jenkins et à la mise en route et à l’accès à Jenkins, ainsi que details of integration with Jenkins dans Intégrations de produits et de services avec CodePipeline.

  3. Lancez Jenkins et sur la page d'accueil, choisissez Manage Jenkins.

  4. Sur la page Manage Jenkins, choisissez Manage Plugins.

  5. Choisissez l'onglet Disponible et, dans la zone de recherche Filtre, entrez AWS CodePipeline. Choisissez CodePipeline Plugin for Jenkins dans la liste, puis choisissez Télécharger maintenant et installer après le redémarrage.

  6. Sur la page Installing Plugins/Upgrades, sélectionnez Restart Jenkins when installation is complete and no jobs are running.

  7. Choisissez Back to Dashboard.

  8. Sur la page principale, choisissez New Item.

  9. Dans Nom de l'élément, entrez le nom du projet Jenkins (par exemple, MyDemoProject). Choisissez Freestyle project, puis OK.

    Note

    Assurez-vous que le nom de votre projet répond aux exigences de CodePipeline. Pour plus d’informations, consultez Quotas dans AWS CodePipeline.

  10. Sur la page de configuration du projet, cochez la case Execute concurrent builds if necessary. Dans Gestion du code source, choisissez AWS CodePipeline. Si vous avez installé Jenkins sur une instance EC2 et que vous l'avez configurée AWS CLI avec le profil de l'utilisateur IAM que vous avez créé pour l'intégration entre Jenkins CodePipeline et Jenkins, laissez tous les autres champs vides.

  11. Choisissez Avancé, puis dans Fournisseur, entrez le nom du fournisseur de l'action tel qu'il apparaîtra dans CodePipeline (par exemple, MyJenkinsProviderName). Assurez-vous que ce nom est unique et facile à retenir. Vous l'utiliserez lorsque vous ajouterez une action de génération à votre pipeline un peu plus tard dans ce didacticiel, et à nouveau lorsque vous ajouterez une action de test.

    Note

    Ce nom d'action doit répondre aux exigences de dénomination des actions dans CodePipeline. Pour plus d’informations, consultez Quotas dans AWS CodePipeline.

  12. Dans Build Triggers, décochez toutes les cases et sélectionnez Poll SCM. Dans Schedule, tapez cinq astérisques séparés par des espaces, comme suit :

    * * * * *

    Ce sondage CodePipeline toutes les minutes.

  13. Dans Build, choisissez Add build step. Choisissez Execute shell (Amazon Linux, RHEL ou Ubuntu Server) Exécuter la commande batch (Windows Server), puis entrez ce qui suit :

    rake
    Note

    Assurez-vous que votre environnement est configuré avec les variables et les paramètres requis pour exécuter Rake ; dans le cas contraire, la génération échouera.

  14. Choisissez Ajouter une action après la génération, puis choisissez AWS CodePipeline Publisher. Choisissez Add et dans Build Output Locations, laissez l'emplacement vide. Il s'agit de la configuration par défaut. Celle-ci crée un fichier compressé à la fin du processus de génération.

  15. Choisissez Save pour enregistrer votre projet Jenkins.

Étape 2 : créer un pipeline dans CodePipeline

Dans cette partie du didacticiel, vous créez le pipeline à l'aide de l'assistant Créer un pipeline.

Pour créer un processus de publication CodePipeline automatisé
  1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'adresse http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Si nécessaire, utilisez le sélecteur de région pour définir la même région que celle où se trouvent vos ressources de pipeline. Par exemple, si vous avez créé des ressources pour le didacticiel précédent dansus-east-2, assurez-vous que le sélecteur de région est défini sur USA East (Ohio).

    Pour plus d'informations sur les régions et les points de terminaison disponibles CodePipeline, consultez la section AWS CodePipeline Points de terminaison et quotas.

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

  4. Sur la page Étape 1: Choisir des paramètres de pipeline, dans Nom du pipeline, saisissez le nom de votre pipeline.

  5. Dans Type de pipeline, choisissez V1 pour les besoins de ce didacticiel. Vous pouvez également choisir la V2 ; toutefois, notez que les types de pipelines diffèrent en termes de caractéristiques et de prix. Pour plus d’informations, consultez Types de pipelines.

  6. Dans Rôle de service, choisissez Nouveau rôle de service pour autoriser CodePipeline la création d'un rôle de service dans IAM.

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

  8. Sur la page Étape 2 : Ajouter une étape source, dans Source provider, sélectionnez GitHub.

  9. 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.

  10. Dans Étape 3 : Ajouter une étape de génération, choisissez Ajouter Jenkins. Dans Nom du fournisseur, entrez le nom de l'action que vous avez fournie dans le CodePipeline plugin pour Jenkins (par exemple MyJenkinsProviderName). Ce nom doit correspondre exactement au nom du CodePipeline plugin pour Jenkins. Dans URL du serveur, entrez l'URL de l'instance EC2 où Jenkins est installé. Dans Nom du projet, entrez le nom du projet que vous avez créé dans Jenkins, par exemple MyDemoProject, puis choisissez Next.

  11. À l'étape 4 : Ajouter une phase de déploiement, réutilisez l' CodeDeploy application et le groupe de déploiement dans lesquels vous avez crééDidacticiel : Création d'un pipeline simple (compartiment S3). Dans Fournisseur de déploiement, choisissez CodeDeploy. Dans Nom de l'application, entrez CodePipelineDemoApplication, ou choisissez le bouton d'actualisation et choisissez le nom de l'application dans la liste. Dans Groupe de déploiement, entrez CodePipelineDemoFleet ou choisissez-le dans la liste, puis choisissez Suivant.

    Note

    Vous pouvez utiliser vos propres CodeDeploy ressources ou en créer de nouvelles, mais cela peut entraîner des coûts supplémentaires.

  12. Dans Step 5: Review, vérifiez les informations puis choisissez Create pipeline.

  13. Le pipeline démarre automatiquement et exécute le modèle à travers le pipeline. Vous pouvez consulter les messages de progression et de réussite et d'échec au fur et à mesure que le pipeline construit l'exemple Haml au format HTML et le déploie sur une page Web sur chacune des instances Amazon EC2 du déploiement. CodeDeploy

Étape 3 : Ajouter une autre étape à votre pipeline

Vous allez maintenant ajouter une étape de test, puis une action de test à cette étape, laquelle utilise le test Jenkins inclus dans le modèle pour déterminer si la page web possède un contenu. Ce test est donné uniquement à des fins de démonstration.

Note

Si vous ne souhaitez pas ajouter une autre étape à votre pipeline, vous pouvez ajouter une action de test à l'étape intermédiaire de celui-ci, avant ou après l'action de déploiement.

Ajout d'une étape de test à votre pipeline

Recherche de l'adresse IP d'une instance

Pour vérifier l'adresse IP d'une instance où vous avez déployé votre code
  1. Lorsque l'état du pipeline affiche Succeeded dans la zone d'état de l'étape Intermédiaire, choisissez Details.

  2. Dans la section Deployment Details, sous Instance ID, choisissez l'identifiant d'instance de l'une des instances déployées avec succès.

  3. Copiez l'adresse IP de l'instance (par exemple, 192.168.0.4). Vous utiliserez cette adresse IP dans votre test Jenkins.

Création d'un projet Jenkins pour tester le déploiement

Création d'un projet Jenkins
  1. Dans l'instance où vous avez installé Jenkins, ouvrez Jenkins et choisissez New Item sur la page d'accueil.

  2. Dans Nom de l'élément, entrez le nom du projet Jenkins (par exemple, MyTestProject). Choisissez Freestyle project, puis OK.

    Note

    Assurez-vous que le nom de votre projet répond aux CodePipeline exigences. Pour plus d’informations, consultez Quotas dans AWS CodePipeline.

  3. Sur la page de configuration du projet, cochez la case Execute concurrent builds if necessary. Dans Gestion du code source, choisissez AWS CodePipeline. Si vous avez installé Jenkins sur une instance EC2 et que vous l'avez configurée AWS CLI avec le profil de l'utilisateur IAM que vous avez créé pour l'intégration entre Jenkins CodePipeline et Jenkins, laissez tous les autres champs vides.

    Important

    Si vous configurez un projet Jenkins et qu'il n'est pas installé sur une instance Amazon EC2, ou s'il est installé sur une instance EC2 exécutant un système d'exploitation Windows, complétez les champs requis par les paramètres de votre hôte proxy et de votre port, et fournissez les informations d'identification de l'utilisateur ou du rôle IAM que vous avez configuré pour l'intégration entre Jenkins et. CodePipeline

  4. Choisissez Advanced et dans Category, choisissez Test.

  5. Dans Fournisseur, entrez le même nom que celui que vous avez utilisé pour le projet de construction (par exemple, MyJenkinsProviderName). Vous utiliserez ce nom lorsque vous ajouterez l'action de test à votre pipeline un peu plus tard dans ce didacticiel.

    Note

    Ce nom doit répondre aux exigences de CodePipeline dénomination des actions. Pour plus d’informations, consultez Quotas dans AWS CodePipeline.

  6. Dans Build Triggers, décochez toutes les cases et sélectionnez Poll SCM. Dans Schedule, tapez cinq astérisques séparés par des espaces, comme suit :

    * * * * *

    Ce sondage CodePipeline toutes les minutes.

  7. Dans Build, choisissez Add build step. Si vous effectuez un déploiement sur des instances Amazon Linux, RHEL ou Ubuntu Server, choisissez Execute shell. Entrez ensuite ce qui suit, où l'adresse IP est l'adresse de l'instance EC2 que vous avez copiée précédemment :

    TEST_IP_ADDRESS=192.168.0.4 rake test

    Si vous effectuez un déploiement sur des instances Windows Server, choisissez Execute batch command, puis entrez ce qui suit, où l'adresse IP est l'adresse de l'instance EC2 que vous avez copiée précédemment :

    set TEST_IP_ADDRESS=192.168.0.4 rake test
    Note

    Ce test suppose la présence d'un port 80 par défaut. Si vous souhaitez spécifier un port différent, ajoutez une instruction de port de test, comme suit :

    TEST_IP_ADDRESS=192.168.0.4 TEST_PORT=8000 rake test
  8. Choisissez Ajouter une action après la génération, puis choisissez AWS CodePipeline Publisher. Ne choisissez pas Add.

  9. Choisissez Save pour enregistrer votre projet Jenkins.

Création d'une quatrième étape

Pour ajouter une étape à votre pipeline qui inclut l'action de test Jenkins
  1. Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'adresse http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Dans Nom, choisissez le nom du pipeline que vous avez créé, MySecondPipeline.

  3. Sur la page des détails du pipeline, choisissez Edit.

  4. Sur la page Edit (Modifier), choisissez + Stage (+ étape) pour ajouter une étape immédiatement après l'étape de génération.

  5. Dans le champ du nom de la nouvelle étape, entrez un nom (par exemple, Testing), puis choisissez + Add action group (+ Ajouter un groupe d'actions).

  6. Dans Nom de l'action, entrez MyJenkinsTest-Action. Dans Fournisseur de test, choisissez le nom du fournisseur que vous avez spécifié dans Jenkins (par exemple, MyJenkinsProviderName). Dans Nom du projet, entrez le nom du projet que vous avez créé dans Jenkins (par exemple, MyTestProject). Dans Artefacts d'entrée, choisissez l'artefact de la version Jenkins dont le nom par défaut est BuildArtifact, puis cliquez sur Terminé.

    Note

    Comme l'action de test Jenkins fonctionne sur l'application générée dans l'étape de génération Jenkins, utilisez l'artefact de génération pour l'artefact d'entrée vers l'action de test.

    Pour en savoir plus sur les artéfacts d'entrée et de sortie et sur la structure des pipelines, consultez CodePipeline référence de structure de pipeline.

  7. Sur la page Edit choisissez Save pipeline changes. Dans la boîte de dialogue Save pipeline changes, choisissez Save and continue.

  8. Bien que la nouvelle étape a été ajoutée à votre pipeline, son état affiche No executions yet pour cette étape, car aucune modification n'a déclenché une autre exécution du pipeline. Pour faire passer l'échantillon dans le pipeline révisé, sur la page des détails du pipeline, choisissez Release change.

    Le pipeline affiche ses étapes et ses actions, ainsi que l'état de la révision en cours d'exécution à travers ces quatre étapes. Le temps nécessaire à l'exécution du pipeline dans toutes les étapes dépendra de la taille des artéfacts, de la complexité de votre génération et des actions de test, en plus d'autres facteurs.

Étape 4 : Nettoyer les ressources

Une fois que vous avez terminé ce didacticiel, supprimez le pipeline, ainsi que les ressources qu'il utilise, afin d'éviter d'être facturé pour leur utilisation. Si vous n'avez pas l'intention de continuer à l'utiliser CodePipeline, supprimez le pipeline, puis l' CodeDeploy application et ses instances Amazon EC2 associées, et enfin, le compartiment Amazon S3 utilisé pour stocker les artefacts. Vous devez également envisager de supprimer d'autres ressources, telles que le GitHub référentiel, si vous n'avez pas l'intention de continuer à les utiliser.

Pour nettoyer les ressources utilisées dans ce didacticiel
  1. Ouvrez une session de terminal sur votre machine Linux, macOS ou Unix locale, ou une invite de commande sur votre machine Windows locale, puis exécutez la delete-pipeline commande pour supprimer le pipeline que vous avez créé. Pour MySecondPipeline, entrez la commande suivante :

    aws codepipeline delete-pipeline --name "MySecondPipeline"

    Cette commande ne donne aucun résultat.

  2. Pour nettoyer vos CodeDeploy ressources, suivez les instructions de la section Nettoyage.

  3. Pour nettoyer les ressources de votre instance, supprimez l'instance EC2 où vous avez installé Jenkins. Pour plus d'informations, consultez Nettoyez votre instance.

  4. Si vous n'avez pas l'intention de créer d'autres pipelines ou de les CodePipeline réutiliser, supprimez le compartiment Amazon S3 utilisé pour stocker les artefacts de votre pipeline. Pour supprimer le compartiment, veuillez suivre les instructions contenues dans Suppression d'un compartiment.

  5. Si vous ne souhaitez pas réutiliser les autres ressources pour ce pipeline, pensez à les supprimer en suivant les instructions propres à chacune d'elles. Par exemple, si vous souhaitez supprimer le GitHub référentiel, suivez les instructions de la section Supprimer un référentiel sur le GitHub site Web.