Passer au contenu principal

Qu’est-ce qu’un pipeline de CI/CD ?

Les entreprises sont obligées de faire face aux mises à jour logicielles, aux corrections de bogues et aux nouvelles innovations sur un marché des applications de plus en plus concurrentiel. Les équipes chargées des logiciels et des opérations doivent travailler de manière cohérente pour répondre aux commentaires des utilisateurs, résoudre les problèmes et déployer des mises à jour sans compromettre les opérations commerciales. Les cycles de développement logiciel classiques, en particulier ceux basés sur le modèle séquentiel en cascade, peinent à suivre le rythme de la fourniture de logiciels modernes. Lorsque le cycle de développement logiciel devient plus compact, les équipes de développement se tournent vers le CI/CD pour créer de manière efficace un code précis, de haute qualité et plus sécurisé.

CI/CD signifie intégration continue et livraison continue. Dans certains cas, CD peut également signifier déploiement continu.

  • L’intégration continue permet à plusieurs développeurs de travailler sur leur code et de le fusionner simultanément sans compromettre la stabilité du code.
  • La livraison continue est un flux de travail automatisé permettant de tester, de valider et de préparer le logiciel en vue de sa publication après approbation humaine.
  • Le déploiement continu est similaire à la livraison continue, sauf que l’approbation est automatisée par des règles préconfigurées.

Ensemble, le CI/CD peut être mis en œuvre sous la forme d’un pipeline qui automatise tous les processus qui étaient auparavant effectués manuellement. Pour mieux comprendre le fonctionnement du pipeline de CI/CD, reportez-vous au schéma ci-dessous.

Chaque étape du pipeline de CI/CD comprend des activités spécifiques du processus de développement logiciel. Elles proposent des tests automatisés pour vérifier la qualité du code, les vulnérabilités et d’autres problèmes techniques avant que les versions logicielles ne soient propagées. Les équipes de développement peuvent ainsi identifier et résoudre les problèmes de code plus rapidement, ce qui permet aux entreprises d’économiser beaucoup de temps, de ressources et de coûts.

La configuration d’un pipeline de CI/CD semble simple. Cependant, les entreprises sont souvent confrontées à des défis lors de la mise en œuvre du flux de travail CI/CD, en particulier dans le cas d’une configuration sur site. Par exemple, les entreprises rencontrent des problèmes d’infrastructure lorsqu’elles doivent gérer un plus grand nombre d’applications, d’outils et de membres de l’équipe. Si rien n’est fait, les développeurs passent plus de temps à réparer le pipeline qu’à travailler sur le code même.

Le transfert des flux de travail CI/CD vers le cloud AWS permet aux équipes de mettre à l’échelle les charges de travail de développement de logiciels modernes, de communiquer les modifications plus efficacement et de gérer les ressources de manière plus efficace. Par exemple, Duolingo a migré son pipeline de CI/CD vers AWS EC2 Mac et mis en œuvre des stratégies avancées de mise à l’échelle automatique. En conséquence, elle a réduit le temps de développement de 50 minutes à seulement 16 minutes.

Comment établir un pipeline de CI/CD ?

AWS simplifie, automatise et sécurise la mise en œuvre de CI/CD grâce à des services gérés et automatisés. Au lieu de fournir manuellement les outils de développement, les serveurs et les ressources, votre équipe peut se concentrer sur des activités à forte valeur ajoutée, telles que la réponse aux demandes des utilisateurs et l’élaboration de stratégies pour le processus de publication du logiciel.

Pour commencer, vous pouvez utiliser AWS CloudFormation pour déployer automatiquement les ressources cloud, dont les équipes DevOps ont besoin pour configurer un pipeline de CI/CD. Vous commencez par décrire les ressources dont vous avez besoin dans le modèle ou par utiliser des modèles prédéfinis. CloudFormation fournit ensuite les ressources qui, ensemble, constituent l’environnement de base qui prend en charge le CI/CD. Vous pouvez ensuite implémenter les étapes du pipeline de CI/CD dans le cloud AWS comme suit.

Source

L’étape source suit les modifications de version apportées par les développeurs. Les développeurs copient une version du code d’origine depuis le référentiel central partagé jusqu’à leur machine locale. Ensuite, ils éditent, compilent, testent et fusionnent le code modifié avec le référentiel.

Voici comment votre équipe peut apporter et gérer des modifications de code à l’aide des outils AWS.

Étape 1 – Écrire du code avec IDE

Un développeur peut créer un nouveau code ou modifier du code existant avec AWS Cloud9, un environnement de développement intégré (IDE) basé sur le cloud qui prend en charge les langages de programmation courants. Avec Cloud9, vous pouvez écrire, exécuter et déboguer du code source sur un navigateur Web si vous avez accès à Internet. Si vous installez un IDE tiers, vous pouvez également télécharger des kits de développement logiciel (SDK) pour permettre l’écriture de code dans différents langages, notamment Java, Python et JavaScript. Les SDK vous permettent d’accéder aux ressources et aux bibliothèques AWS via l’interface de programmation d’application (API) depuis votre environnement de codage préféré.

Étape 2 – Valider le code dans le référentiel central

Les développeurs utilisent des outils tiers, tels que GitHub, pour créer des référentiels de code privés, gérer les requêtes d’extraction et fusionner les modifications. Il agit comme un système de contrôle de version qui vous permet de suivre les modifications apportées par d’autres développeurs et de revenir à un code source fonctionnel précédent si nécessaire.

Développement et test

Au stade de développement, le code stocké dans le référentiel central est envoyé à un serveur de développement. Le serveur de développement transforme ensuite le code source et les dépendances en un fichier logiciel appelé artefact que les développeurs peuvent exécuter lors des étapes suivantes. Par exemple, si vous créez un programme Java, vous obtiendrez un fichier JAR ou WAR. Plusieurs tests préliminaires peuvent être effectués à ce stade, notamment une analyse de code unitaire et statique.

  • Les tests unitaires garantissent que les différentes fonctions logicielles produisent les bons résultats. 
  • L’analyse du code statique vérifie le code source pour identifier les bogues, les failles de sécurité et le respect des normes de codage.

Si le code échoue à l’un des tests, les développeurs le remettent à l’état précédent et résolvent les problèmes.

Traditionnellement, les équipes de développement doivent configurer leurs propres serveurs de développement pour emballer leurs applications. En outre, elles doivent écrire manuellement des scripts de test, les valider et surveiller les résultats par le biais d’itérations répétées. Elles peuvent désormais utiliser AWS CodeBuild pour accélérer le flux de travail de développement de CI/CD. Cela permet à votre équipe d’automatiser les générations et de tester les logiciels au fur et à mesure qu’elles apportent des modifications. Cela localise le code source dans le référentiel spécifié et exécute le script de développement que vous avez configuré.

AWS CodeBuild met automatiquement à l’échelle sa capacité de calcul en fonction de vos charges de travail de développement. Vous ne devez dès lors pas attendre la fin des versions précédentes pour en démarrer une nouvelle. Les équipes logicielles peuvent identifier les problèmes de code à un stade précoce et les résoudre avant qu’ils ne deviennent complexes.

Par exemple, si vous créez un projet Node.js, vous pouvez intégrer le cadre de test Jasmine ou Jest à AWS CodeBuild. Ces cadres vous permettent d’écrire facilement des scénarios de test, de spécifier les résultats attendus et de les valider lors des exécutions de développement. 

La phase de test intervient immédiatement après le développement. Cela est conçu pour soumettre l’application à des tests plus rigoureux, permettant aux équipes logicielles d’améliorer la qualité du code, les performances, la sécurité et d’autres aspects clés. Avec un pipeline de CI/CD, les tests sont automatisés et s’étendent à plusieurs domaines.

  • Les tests d’intégration veillent à ce que tous les services et composants tiers utilisés par l’application interagissent correctement entre eux.
  • Les tests fonctionnels fournissent une évaluation complète de l’application du point de vue de l’utilisateur final.
  • Les tests de sécurité explorent l’application pour détecter d’éventuels risques et failles de sécurité.
  • Les tests de performance veillent à ce que l’application reste réactive et fonctionnelle en cas de conditions extrêmes ou inattendues, telles qu’un pic de trafic soudain.

Encore une fois, l’application doit réussir tous les tests spécifiés avant de pouvoir passer à l’étape suivante.

Mise en place

La mise en place vous permet d’effectuer les dernières vérifications sur l’application avant de la mettre à la disposition des utilisateurs finaux. À ce stade, les équipes logicielles déploient l’application dans un environnement qui imite les implémentations réelles. Souvent, elles utilisent des données fictives et recrutent un groupe d’utilisateurs finaux pour tester l’application dans le but de détecter les problèmes non détectés avant sa sortie.

Par exemple, vous avez mis à jour une application et vous souhaitez vérifier comment elle se comporte lors des interactions avec les utilisateurs. Son déploiement dans l’environnement de mise en place vous permet d’évaluer les performances logicielles sans perturber les opérations commerciales. Après avoir rempli toutes les conditions de test, les équipes logicielles déploient l’application dans l’environnement de production, ce qui la rend accessible aux utilisateurs finaux.

Le déploiement dans plusieurs environnements peut s’avérer difficile, en particulier si les équipes le font manuellement. AWS CodeDeploy peut simplifier les efforts de déploiement des applications. Il automatise le déploiement des applications dans différents environnements. Vous pouvez consulter les activités de déploiement, suivre les modifications et revenir à une version précédente si nécessaire. Il fait également le pont entre la mise en place et la production. Par exemple, vous pouvez utiliser les instructions de déploiement exactes que vous utilisez pour préparer une version de production.

Production

La production est l’environnement en direct dans lequel de vrais utilisateurs accèdent à votre application. Après avoir modifié, testé et validé les modifications, les équipes logicielles publient l’application mise à jour dans l’environnement de production. Bien que cela marque la fin du pipeline de CI/CD, les efforts visant à s’assurer que l’application répond aux exigences en matière de performances et de sécurité et aux exigences de l’entreprise se poursuivent. Par conséquent, vous devrez surveiller en permanence l’application pendant qu’elle fonctionne en production.

Amazon CloudWatch est un service qui fournit aux équipes de développement et d’exploitation une visibilité sur les applications qu’elles déploient sur AWS, sur site ou dans d’autres environnements cloud. Il collecte et visualise automatiquement les données opérationnelles, ce qui vous permet de mieux comprendre les performances de votre application dans des conditions réelles. En outre, vous pouvez définir des alertes et être informé des événements qui nécessitent une attention rapide de la part de vos équipes.  

Comment automatiser un pipeline de CI/CD ?

La rationalisation des outils CI/CD de différents fournisseurs peut s’avérer difficile, en particulier si cela implique de nombreuses configurations manuelles. Cependant, avec AWS CodePipeline, vous pouvez automatiser, mettre à l’échelle et accélérer l’ensemble du processus de publication du code tout en préservant la flexibilité.

AWS CodePipeline vous permet de modéliser un flux de travail CI/CD à l’aide d’une interface utilisateur graphique. Vous pouvez facilement intégrer les services AWS dans votre pipeline ou vous connecter aux outils et ressources existants que vous utilisez. Par exemple, si vous souhaitez utiliser Jenkins comme serveur de développement, vous pouvez l’intégrer dans AWS CodePipeline.

Nous résumons ci-dessous les étapes à suivre pour y parvenir.

  1. Installez Jenkins et le plug-in AWS CodePipeline pour Jenkins.
  2. Définissez ensuite les autorisations d’accès avec la Gestion des identités et des accès AWS (IAM) pour Jenkins. Cela permet à Jenkins d’utiliser des informations d’identification autorisées pour interagir avec AWS CodePipeline.
  3. Connectez-vous à la console AWS CodePipeline et créez un pipeline personnalisé.
  4. Connectez le pipeline à un référentiel de code source partagé, tel que GitHub.
  5. Ajoutez ensuite une étape de développement et sélectionnez Jenkins comme serveur de développement.
  6. Ajoutez toutes les étapes de test nécessaires, y compris les actions de test requises et les déclencheurs de développement.
  7. Connectez ensuite l’étape de déploiement à AWS CodeDeploy ou à un autre service de déploiement. 

Comment AWS peut-elle répondre à vos besoins en matière de pipeline de CI/CD ?

Un pipeline de CI/CD permet aux entreprises de produire, de tester et de publier des mises à jour d’applications plus rapidement sans compromettre la qualité et la sécurité des logiciels. Les équipes de développement logiciel modifient le code, fusionnent les modifications, automatisent les tests, planifient le déploiement, etc. grâce à des outils CI/CD automatisés. Cependant, certaines équipes rencontrent des difficultés pour mettre à l’échelle les flux de travail CI/CD en raison de contraintes liées aux infrastructures, aux ressources et aux processus.

AWS fournit une suite de solutions basées sur le cloud pour créer, rationaliser et mettre à l’échelle votre pipeline de CI/CD.

  • AWS CloudFormation fournit des ressources sur lesquelles les outils CI/CD s’exécutent.
  • AWS Cloud9 permet aux développeurs d’écrire, d’exécuter et de déboguer du code depuis leur navigateur.
  • AWS CodeBuild vous permet de compiler, de tester et d’emballer votre application sans devoir gérer vos propres serveurs de développement.
  • AWS CodeDeploy automatise le déploiement dans n’importe quel environnement, y compris sur site et sur les instances AWS.
  • AWS CodePipeline vous permet de modéliser l’ensemble du flux de travail CI/CD, de la source à l’environnement de production en direct.
  • AWS CloudWatch permet aux équipes opérationnelles de surveiller, d’enregistrer et d’analyser en permanence les applications déployées.

Si vous avez besoin d’aide supplémentaire pour configurer un pipeline de CI/CD, contactez Amazon Professional Services.