Une explication en profondeur des différentes étapes du pipeline chez Go2Scale

Une explication en profondeur des différentes étapes du pipeline chez Go2Scale
0
5 min read

Chez Go2Scale, nous répondons aux problèmes des développeurs, qui sont en constantes évolutions ! C’est pourquoi nous essayons de toujours définir des standards qui peuvent être réutilisés et améliorés, tels que les étapes construisant nos pipelines. 

Au niveau de l’Intégration Continue (CI) et du Déploiement Continu (CD), les jobs que nous utilisons doivent être rapides, utilisables en parallèle dès que nécessaire, pour fournir une livraison continue et efficace. Mais nous avons besoin d’eux dans un certain ordre qui assurera, par exemple, que nous ne sommes pas en train de déployer une nouvelle version d’une application avant que les tests ne soient terminés. C’est pourquoi les DevOps doivent construire leur pipeline avec attention, en utilisant des étapes pour les catégorisés, et surtout les ordonner.

Suite à cette observation, nous avons défini une norme pour les étapes des pipelines, englobant tous les composants d’un pipeline d’intégration et déploiement continu, et cela pour tous types d’applications ou environnements de production. Cette configuration est composée de 5 étapes :

  • Test statiques (ou static tests en anglais)
  • Développement (correspondant au build)
  • Test dynamique (dynamic test)
  • Vérification (review)
  • déploiement (deployment)
Les étapes du pipeline chez Go2Scale

Vous voulez savoir de quoi se compose chacune de ses étapes ? Certaines sont assez transparentes, et vous les utilisez probablement déjà de manière similaire. Pour en être certain, la réponse est par ici ! 👇

Efficacité

Les étapes de bases composants les pipelines DevOps

Étape n°1 : les tests statiques

Le premier niveau des votre pipeline de développement correspond à ce que vous voulez faire, en utilisant seulement le code de votre application. Bien entendu, vous trouverez dans cette étape des unités de test. Mais tous les outils, depuis les linters jusqu’aux analyses statiques doivent se trouver ici. C’est également à ce niveau de votre pipeline que vous pouvez exécuter des outils de détection de vulnérabilités, tels que Static Analysis Security Tool ou secret detection.

📌 Voici quelques exemples de jobs que vous pouvez trouver à cette étape de votre pipeline :

python_tests permet de vérifier le comportement de vos fonction avec pytest.

gitleaks : grâce à ce job, vous pourrez vérifier que vous n’avez pas oublié un code secret ou un mot de passe dans vos codes.

ShiftLeftSecurity analyse votre code pour détecter d’éventuelles vulnérabilités.

Étape n°2 : le développement

Cette étape est particulièrement transparente. Vous voulez développer une nouvelle version de votre application, et/ ou de la documentation que vous pourrez réutiliser dans les prochaines étapes de votre pipeline, dans le but de déployer.

📌 Quelques jobs que l’on peut trouver dans ce niveau du pipeline :

docker build construit une version containérisée de votre projet, afin d’assurer sa portabilité et sa reproduction.

rpm_build crée un paquet versionné rpm de votre projet, pour l’installer sur RHEL systems.

mkdocs construit une version HTML de la documentation de votre projet, en utilisant des fichiers markdown.

doxygen construit une version HTML de la documentation de votre projet grâce aux commentaires présents dans votre code.

Étape n°3 : test dynamique

Contrairement à l’étape des tests statiques, ce niveau de votre pipeline vous permet de tester une version de votre application juste développée de manière dynamique. Cela revient à valider les comportements des différentes entrées de votre application plutôt que ces fonctionnalités.

📌 Quelques exemples de jobs que l’on va trouver à cette étape de votre pipeline :

python_tests exécute des tests pour vérifier le comportement de votre API, en utilisant des requêtes telles qu’API users.

zaproxy est un outil de détection dynamique de vulnérabilité. Il va mimer des attaquants voulant maltraiter votre projet, pour révéler les vulnérabilités existantes.

Efficacité

L’étape de vérification, créer un environnement pour tester manuellement vos productions.

Cette étape peut vous être inconnue. Ce n’est pas quelque chose que l’on trouve habituellement dans les environnements de développement. Pourtant, ce niveau de votre pipeline est essentiel. C’est un outil puissant pour optimiser votre flux de développement et augmenter le degré de confiance dans votre produit.

Cette étape de validation doit vous permettre de créer un environnement fonctionnel complet et éphémère, afin d’effectuer vos tests manuellement. C’est également le meilleur moyen de montrer les nouveaux changements à votre client, avant fusion avec la branche principale.

Cet environnement est produit dynamiquement, mais, contrairement au niveau de test dynamique, la destruction se déclenche manuellement. Cela vous donne tout le temps dont vous avez besoin pour vérifier les éléments qui peuvent être testés automatiquement !

 En effet, votre production peut être déployée sur l’url my-app.com. Ce niveau de votre pipeline de développement vous permettra de tester les nouveaux éléments de votre production sur l’url review-32-my-issue.my-webapp.com.

📌 Ici, nous retrouvons des jobs comme helm review, utilisé pour créer un environnement de vérification sur kubernetes.

Efficacité

Le déploiement, dernière étape de votre pipeline

Cette étape va également de soi. Si tous les jobs de chacune de étapes précédentes sont validés, vous pouvez déployer une nouvelle version de votre projet et la commercialiser. Vous pouvez également déployer d’autres parties de votre projet, telles que la documentation, ou n’importe quel élément créé lors de la phase de développement, en utilisant une image Docker construite avec helm pour déployer, ou avec Ansible pour mettre à jour vos serveurs.

📌 Voici les jobs types que l’on peut retrouver dans ce niveau de votre pipeline :

helm_deploy est utilisé pour déployer votre application sur vos environnements kubernetes.

ansible_deploy vous permettra de facilement déployer votre application grâce à vos rôles et manuel Ansible.

Grâce à pages, vous pourrez déployer les version HTML de votre documentation sur les pages de votre serveur Gitlab, et ainsi la rendre accessible à vos utilisateurs.

Efficacité

Construire votre pipeline : un exemple

Voici un tutoriel dans lequel nous construisons un pipeline en utilisant les étapes décrites ci-dessus. Grâce à ce pipeline optimisé, vous réduisez le temps de développement de l’application ! Dans cette vidéo, nous utilisons un produit développé par Go2Scale, R2Devops

Si vous voulez en apprendre plus sur cette plateforme et comprendre comment elle peut vous aider à optimiser la construction de votre pipeline d’intégration et déploiement continu, vous pouvez lire notre article et rejoindre notre communauté !

0

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *