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 Didacticiel : Création d'un pipeline simple (référentiel CodeCommit), 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.

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 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 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 Comptes AWS à une personne sûre et fiable.
Avant de commencer ce didacticiel, assurez-vous de réunir les prérequis généraux indiqués dans Commencer avec CodePipeline.
Rubriques
É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 EC2 instance qui utilise un rôle d'instance IAM que vous créez 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' EC2 instance afin d'autoriser les connexions entrantes vers 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).
Rubriques
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
-
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 :
-
Si vous comptez déployer votre échantillon sur des instances Amazon Linux, RHEL ou Ubuntu Server, choisissez codepipeline-jenkins-aws-codedeploy_linux.zip
. -
Si vous comptez déployer votre échantillon sur des instances Windows Server, choisissez CodePipeline-Jenkins- AWSCodeDeploy_Windows
.zip.
-
-
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 documentation GitHub
.
Créez un rôle IAM à utiliser pour l'intégration de Jenkins
Il est recommandé de lancer une EC2 instance pour héberger votre serveur Jenkins et d'utiliser un rôle IAM pour accorder à l'instance les autorisations requises pour interagir avec. CodePipeline
Connectez-vous à la console IAM AWS Management Console et ouvrez-la à https://console.aws.amazon.com/iam/
l'adresse. -
Dans le panneau de navigation de la console IAM, choisissez Rôles, puis Créer un rôle.
-
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 Sélectionnez votre cas d'utilisation, choisissez EC2.
-
Choisissez Suivant : 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. -
Dans la page Vérification, dans Nom du rôle, entrez le nom du rôle à créer spécifiquement pour l'intégration Jenkins (par exemple,
JenkinsAccess
), puis choisissez Créer un rôle.
Lorsque vous créez l' EC2 instance sur laquelle vous allez installer Jenkins, à l'étape 3 : Configurer les 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 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
-
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 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 de plus amples informations, veuillez consulter Résolution des problèmes CodePipeline. -
Installez Jenkins sur l' EC2 instance. 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. -
Lancez Jenkins et sur la page d'accueil, choisissez Manage Jenkins.
-
Sur la page Manage Jenkins, choisissez Manage Plugins.
-
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. -
Sur la page Installing Plugins/Upgrades, sélectionnez Restart Jenkins when installation is complete and no jobs are running.
-
Choisissez Back to Dashboard.
-
Sur la page principale, choisissez New Item.
-
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 relatives à CodePipeline. Pour de plus amples informations, veuillez consulter Quotas dans AWS CodePipeline.
-
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é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.
-
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
Le nom de cette action doit respecter les exigences d'attribution de noms pour les actions dans CodePipeline. Pour de plus amples informations, veuillez consulter Quotas dans AWS CodePipeline.
-
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.
-
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.
-
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.
-
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é
Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'adresse http://console.aws.amazon. com/codesuite/codepipeline/home
. -
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 dans
us-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.
-
Sur la page Bienvenue, la page Démarrez ou la page Pipelines, choisissez Créer un pipeline.
-
Sur la page Étape 1 : Choisir une option de création, sous Options de création, choisissez l'option Créer un pipeline personnalisé. Choisissez Suivant.
-
Sur la page Étape 2 : Choisir les paramètres du pipeline, dans Nom du pipeline, entrez le nom de votre pipeline.
-
CodePipeline fournit des pipelines de type V1 et V2, dont les caractéristiques et le prix diffèrent. Le type V2 est le seul type que vous pouvez choisir dans la console. Pour plus d'informations, consultez la section Types de pipelines. Pour plus d'informations sur la tarification CodePipeline, consultez la section Tarification
. -
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.
-
Conservez les valeurs par défaut sous Advanced settings (Paramètres avancés), puis choisissez Suivant.
-
Sur la page Étape 3 : Ajouter une étape source, dans Source provider, sélectionnez GitHub.
-
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.
-
À l'étape 4 : Ajouter une phase de construction, 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' EC2instance sur laquelle Jenkins est installé. Dans Nom du projet, entrez le nom du projet que vous avez créé dans Jenkins, par exempleMyDemoProject
, puis choisissez Next. -
À l'étape 5 : Ajouter une phase de test, choisissez Ignorer l'étape de test, puis acceptez le message d'avertissement en choisissant à nouveau Ignorer.
Choisissez Suivant.
-
À l'étape 6 : 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, entrezCodePipelineDemoFleet
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.
-
À l'étape 7 : Passez en revue, passez en revue les informations, puis choisissez Créer un pipeline.
-
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 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
Rubriques
Recherche de l'adresse IP d'une instance
Pour vérifier l'adresse IP d'une instance où vous avez déployé votre code
-
Lorsque l'état du pipeline affiche Succeeded dans la zone d'état de l'étape Intermédiaire, choisissez Details.
-
Dans la section Deployment Details, sous Instance ID, choisissez l'identifiant d'instance de l'une des instances déployées avec succès.
-
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
-
Dans l'instance où vous avez installé Jenkins, ouvrez Jenkins et choisissez New Item sur la page d'accueil.
-
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 de plus amples informations, veuillez consulter Quotas dans AWS CodePipeline.
-
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é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 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'utilisateur ou du rôle IAM que vous avez configuré pour l'intégration entre Jenkins et. CodePipeline
-
Choisissez Advanced et dans Category, choisissez Test.
-
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 de plus amples informations, veuillez consulter Quotas dans AWS CodePipeline.
-
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.
-
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' EC2 instance que vous avez copiée précédemment :
TEST_IP_ADDRESS=
192.168.0.4
rake testSi 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' EC2 instance que vous avez copiée précédemment :
set TEST_IP_ADDRESS=
192.168.0.4
rake testNote
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 -
Choisissez Ajouter une action après la génération, puis choisissez AWS CodePipeline Publisher. Ne choisissez pas Add.
-
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
Connectez-vous à la CodePipeline console AWS Management Console et ouvrez-la à l'adresse http://console.aws.amazon. com/codesuite/codepipeline/home
. -
Dans Nom, choisissez le nom du pipeline que vous avez créé, MySecondPipeline.
-
Sur la page des détails du pipeline, choisissez Edit.
-
Sur la page Edit (Modifier), choisissez + Stage (+ étape) pour ajouter une étape immédiatement après l'étape de génération.
-
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). -
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 estBuildArtifact
, 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.
-
Sur la page Edit choisissez Save pipeline changes. Dans la boîte de dialogue Save pipeline changes, choisissez Save and continue.
-
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
-
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.
-
Pour nettoyer vos CodeDeploy ressources, suivez les instructions de la section Nettoyage.
-
Pour nettoyer les ressources de votre instance, supprimez l' EC2 instance sur laquelle vous avez installé Jenkins. Pour plus d'informations, consultez Nettoyez votre instance.
-
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.
-
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.