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 explique comment configurer Jenkins sur une EC2 instance à des fins de démonstration.

Important

La plupart des actions que vous ajoutez à votre pipeline dans le cadre de 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 que celle 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 de plus amples informations, veuillez consulter Ajouter une action interrégionale dans CodePipeline.

Important

Dans le cadre de la création d'un pipeline, un compartiment d'artefacts S3 fourni par le client sera utilisé CodePipeline pour les artefacts. (Ceci 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 à cette personne sûre et Comptes AWS qu'elle sera fiable.

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 IAM utilisateur ou un rôle 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 EC2 instance qui utilise un IAM rôle d'instance que vous avez créé pour l'intégration de Jenkins. Pour que les liens du pipeline puissent être correctement connectés aux actions Jenkins, vous devez configurer les paramètres du proxy et du pare-feu sur le serveur ou l'EC2instance afin d'autoriser les connexions entrantes vers le port utilisé par votre projet Jenkins. Assurez-vous d'avoir configuré Jenkins pour authentifier les utilisateurs et 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 pour qu'il n'utilise que des HTTPS connexions, ou 80 et 8080 si vous autorisez les connexions). HTTP Pour plus d'informations, consultez Sécurisation de Jenkins.

Note

Ce didacticiel utilise un exemple de code et configure les étapes de construction qui convertissent l'exemple de Haml en. 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 d'environnement système requises pour 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, en modifiant la PATH variable pour inclure le répertoire dans lequel 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 IAM rôle à utiliser pour l'intégration de Jenkins

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

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

  2. Dans le volet de navigation de la IAM console, sélectionnez Rôles, puis sélectionnez Créer un rôle.

  3. Sous Select type of trusted entity (Sélectionner le type d'entité approuvée), choisissez Service AWS. Sous Choisissez le service qui utilisera ce rôle, sélectionnez EC2. Sous Sélectionnez 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 Create role.

Lorsque vous créez l'EC2instance 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 AmazonEC2, consultez IAMles sections Rôles pour Amazon EC2, Utilisation de IAM rôles pour accorder des autorisations aux applications exécutées sur des EC2 instances Amazon 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 EC2 instance 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'EC2instances, consultez Lancer une EC2 instance Amazon dans le guide de EC2 l'utilisateur Amazon.

    Note

    Si vous souhaitez déjà utiliser des ressources Jenkins, vous pouvez le faire, mais vous devez créer un IAM utilisateur 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 utiliser l'interface utilisateur de Jenkins pour fournir les informations d'identification, configurez Jenkins pour autoriser uniquement. HTTPS Pour de plus amples informations, veuillez consulter Résolution des problèmes CodePipeline.

  2. Installation de 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'article, entrez le nom du projet Jenkins (par exemple, MyDemoProject). Choisissez le projet Freestyle, puis cliquez sur OK.

    Note

    Assurez-vous que le nom de votre projet répond aux exigences de CodePipeline. Pour de plus amples informations, veuillez consulter 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 EC2 instance et que vous l'avez configuré AWS CLI avec le profil de l'IAMutilisateur 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 de plus amples informations, veuillez consulter Quotas dans AWS CodePipeline.

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

    * * * * *

    Ce sondage est effectué CodePipeline toutes les minutes.

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

    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 de plus amples informations, veuillez consulter Types de canalisations.

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

  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 indiqué dans le CodePipeline plugin pour Jenkins. Dans Serveur URL, entrez URL l'EC2instance sur laquelle Jenkins est installé. Dans Nom du projet, entrez le nom du projet que vous avez créé dans Jenkins, tel que 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 crée l'échantillon Haml HTML et le déploie sur une page Web sur chacune des EC2 instances Amazon du CodeDeploy déploiement.

É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 lors de 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'article, entrez le nom du projet Jenkins (par exemple, MyTestProject). Choisissez le projet Freestyle, puis cliquez sur OK.

    Note

    Assurez-vous que le nom de votre projet répond aux CodePipeline exigences. Pour de plus amples informations, veuillez consulter 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 EC2 instance et que vous l'avez configuré AWS CLI avec le profil de l'IAMutilisateur 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 EC2 instance Amazon, ou s'il est installé sur une EC2 instance qui exécute 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'IAMutilisateur ou du rôle 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 ultérieurement dans ce didacticiel.

    Note

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

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

    * * * * *

    Ce sondage est effectué CodePipeline toutes les minutes.

  7. Dans Build, choisissez Add build step. Si vous effectuez un déploiement sur des instances Amazon Linux ou Ubuntu Server, choisissez Execute shell. RHEL Entrez ensuite ce qui suit, où l'adresse IP est l'adresse de l'EC2instance 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 Exécuter la commande par lots, puis entrez ce qui suit, où l'adresse IP est l'adresse de l'EC2instance 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 choisissez OK.

    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 EC2 instances Amazon 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'EC2instance sur laquelle 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.