Vos pipelines de CI/CD efficaces

et sans prise de tête*

* Enfin, pas trop...

Rémi Verchère @ Accenture

 

Au sommaire

  • Rappel de quelques concepts CI/CD & GitLab-CI
  • Problématiques de gestion à l'échelle
  • Présentation d'outils pour nous aider + démos associées
  • Mes bonnes pratiques (ou mauvaises, vous jugerez par vous-même)

La démo

Qui suis-je ?

👋 Rémi Verchère

💻 Cloud Native Infrastructure Consultant

Instant pub

CI / CD

CI / CD

Wikipedia: En génie logiciel, CI/CD (parfois écrit CICD) est la combinaison des pratiques d'intégration continue et de livraison continue ou de déploiement continu.

Le CI/CD comble le fossé entre les activités et les équipes de développement et d'exploitation en imposant l'automatisation de la création, des tests et du déploiement des applications. Les pratiques DevOps modernes impliquent le développement continu, le test continu, l'intégration continue, le déploiement continu et la surveillance continue des applications logicielles tout au long de leur cycle de vie. La pratique CI/CD, ou pipeline CI/CD, constitue l'épine dorsale des opérations DevOps modernes.

GitLab-CI

  • Solution de CI/CD proposée par GitLab
  • Fichier .gitlab-ci.yml qui définit les actions de CI/CD
  • Runners qui les exécutent et renvoient le résultat au serveur GitLab
  • Cette présentation a été générée via un pipeline de CI/CD

center

GitLab-CI

Un peu de vocabulaire

  • Pipelines
  • Stages
  • Jobs

center

CI / CD

Exemple de job

python_lint:
  image: "python:3-slim"
  stage: test
  before_script:
    - pip install -r app/requirements.txt
  script:
    - pylint -d C0114,C0116 app/*.py
  only:
    refs:
      - main

CI / CD

Mise en oeuvre

  • Quels stages ?

  • Quels jobs, et on met quoi exactement dans les jobs ?

  • Quel environnement d'exécution pour les jobs ?

  • Workflow Git, mais pas de workflow CI/CD ?

center

CI / CD

Mise à l'échelle

R2Devops

R2Devops

  • Marketplace de jobs de CI/CD, pour améliorer la vie des devs (qui ont autre chose à faire que d'écrire des pipelines), éditeur intégré, dashboard

  • Créé en 2020 par la société GO2scale @ Montpellier.

  • Catalogue de jobs officiels, communautaires, partenaires, public ou privé.

  • Informations sur l'utilisation, conformité, sécurité, etc. de la supply chain

  • Plateforme Saas ou On Premise

  • Pour aller plus loin

R2Devops

 

center

To Be Continuous

To Be Continuous

To Be Continuous

 

center

One more thing™

R2devops + To Be Continuous ??

  • R2devops : Developer Experience, Marketplace, Facilité de partage
  • To Be Continuous : Pipelines complets, Workflows, Environnements de déploiement

Collaboration !

R2devops + To Be Continuous

 

center

Prenons de la hauteur

Dashboard R2Devops

  • Maintenabilité de la CI/CD
    • Utilisation
    • Conformité
    • Mise à jour
  • Sécurité de la Supply Chain
    • Leak de données, variables
    • Vulnérabilités des images

Mes bonnes pratiques

Mes bonnes pratiques

  • Keep It Simple Stupid
    • 1 job auto-suffisant
    • Pas forcément besoin de gérer TOUS les cas d'usage si maitrisé (cf rôles Ansible)
    • Pas d'over-engineering (cf Generated & Parent-Child Pipelines)

center

Mes bonnes pratiques

  • 1 projet de templates de jobs, ouvert à la collaboration.

  • Proposer des pipelines par défaut, utilisant les templates de jobs.

  • Documentation :

    • Présentation générale des templates
    • Par Job
    • Par Pipeline
    • Nomenclature simple
    • Changelogs pour aider les devs

Mes bonnes pratiques

  • Points de détails:

    • ⚠️ Variables globales vs locales: hiérachie
    include:
      - remote: path/to/my_template'
        ref: tag-1.0.0
    variables:
      MY_GLOBAL_VAR: "VMUG"
    
    my_job:
      variables:
        MY_LOCAL_VAR: "VMUG FR"
    
    • ⛔ Versionnez vos jobs (+ changelog cf slide précédente)
  • 😇 Inspirez-vous de R2Devops & To Be Continuous

  • 😁 Même mieux, utilisez-les !

  • 🤯 Encore mieux, contribuez !!

Vos questions & merci !

Rémi Verchère @ Accenture

J'ai des stickers pour vous ;)