Imaginez ceci : vous travaillez sur un projet Python et vous passez des heures à exécuter manuellement vos tests avant chaque déploiement. Fatiguant, non ? Et si je vous disais qu’il existe une solution pour automatiser complètement ce processus ? Avec GitLab, nous pouvons configurer un pipeline CI/CD qui exécute vos tests Python automatiquement à chaque commit. Ensemble, nous allons découvrir comment mettre en place cette automatisation, étape par étape.

Prérequis et vision d’ensemble

Avant de commencer, voici ce dont vous aurez besoin :

  • Un projet Python avec des tests unitaires (par exemple, avec pytest ou unittest)
  • Un compte GitLab (gratuit ou entreprise)
  • Des connaissances de base en Python et Git
  • Un fichier requirements.txt pour vos dépendances

Le temps estimé pour cette configuration est d’environ 30 minutes, selon votre familiarité avec les outils.

Tutoriel pas-à-pas

1. Préparer votre projet Python

Objectif : S’assurer que votre projet est prêt pour l’automatisation.

  1. Vérifiez que vos tests sont bien configurés. Par exemple, avec pytest, votre structure pourrait ressembler à ceci :
    mon_projet/ ├── tests/ │ ├── test_ma_fonction.py │ └── ... ├── src/ │ └── ... └── requirements.txt
  2. Installez pytest si ce n’est pas déjà fait :
    pip install pytest
  3. Vérifiez que vos tests passent en local :
    pytest

Vérification : Tous vos tests doivent passer sans erreur.

Erreurs fréquentes :

  • Tests qui échouent en local : corrigez-les avant de continuer
  • Absence de requirements.txt : générez-le avec pip freeze > requirements.txt

2. Créer un fichier .gitlab-ci.yml

Objectif : Configurer le fichier de configuration CI/CD de GitLab.

  1. À la racine de votre projet, créez un fichier nommé .gitlab-ci.yml
  2. Ajoutez la configuration de base :
    stages: - test test_python: stage: test image: python:3.9 before_script: - pip install -r requirements.txt script: - pytest
  3. Poussez ce fichier sur votre dépôt GitLab

Vérification : Allez dans l’onglet « CI/CD » > « Pipelines » de votre projet GitLab. Vous devriez voir un pipeline en cours d’exécution.

Erreurs fréquentes :

  • Erreur de syntaxe dans le fichier YAML : vérifiez l’indentation
  • Image Docker non disponible : utilisez une version stable de Python

3. Configurer les variables d’environnement

Objectif : Ajouter des variables sécurisées si nécessaire.

  1. Dans GitLab, allez dans « Settings » > « CI/CD »
  2. Ajoutez vos variables sous « Variables d’environnement »
  3. Par exemple, pour une base de données de test :
    DB_HOST=localhost DB_USER=test DB_PASSWORD=secret

Vérification : Vos tests doivent pouvoir accéder à ces variables dans le pipeline.

Erreurs fréquentes :

  • Variables non masquées : utilisez toujours le type « File » pour les mots de passe
  • Variables non disponibles : vérifiez leur nom et leur casse

4. Ajouter des tests supplémentaires

Objectif : Enrichir votre pipeline avec d’autres types de tests.

  1. Modifiez votre fichier .gitlab-ci.yml pour inclure des tests de couverture :
    test_python: script: - pip install pytest-cov - pytest --cov=./src --cov-report=xml artifacts: reports: coverage_report: coverage_format: cobertura path: coverage.xml
  2. Ajoutez des tests de linting avec flake8 :
    lint: stage: test script: - pip install flake8 - flake8 src/ tests/

Vérification : Le pipeline doit maintenant inclure plusieurs étapes de test.

Erreurs fréquentes :

  • Tests de couverture qui échouent : ajustez votre seuil de couverture
  • Erreurs de linting : corrigez les problèmes de style

5. Configurer les notifications

Objectif : Recevoir des alertes en cas d’échec.

  1. Dans « Settings » > « CI/CD » > « Email notifications », configurez les destinataires
  2. Ou utilisez des webhooks pour Slack ou d’autres outils

Vérification : Vous devriez recevoir une notification après un échec de pipeline.

Bonnes pratiques / Optimisations

Pour aller plus loin, voici quelques conseils :

  • Cachez les dépendances pour accélérer les builds :
    cache: paths: - .cache/pip
  • Utilisez des tags pour exécuter des tests spécifiques
  • Limitez la durée des jobs avec timeout
  • Documentez votre pipeline avec des commentaires dans le fichier YAML

FAQ ciblée

Comment puis-je exécuter des tests sur plusieurs versions de Python ?

Créez plusieurs jobs avec différentes images Docker, par exemple :

test_python_3_8: image: python:3.8 script: - pytest test_python_3_9: image: python:3.9 script: - pytest

Comment puis-je tester mon application avec une base de données ?

Utilisez un service comme PostgreSQL ou MySQL dans votre pipeline :

test_with_db: services: - name: postgres:13 alias: postgres variables: POSTGRES_DB: test_db POSTGRES_USER: test POSTGRES_PASSWORD: secret

Comment puis-je exécuter des tests uniquement sur certaines branches ?

Utilisez les règles dans votre fichier YAML :

rules: - if: $CI_COMMIT_BRANCH == "main"

Comment puis-je voir les résultats de couverture de code ?

Pour visualiser les résultats de couverture de code dans GitLab, vous devez d’abord générer un rapport de couverture lors de l’exécution de vos tests. Cela peut être fait en utilisant des outils comme pytest-cov pour Python. Ensuite, vous pouvez configurer votre pipeline GitLab CI/CD pour afficher ces résultats directement dans l’interface de GitLab.

Voici un exemple de configuration dans votre fichier .gitlab-ci.yml pour générer et afficher les résultats de couverture de code :

stages:
  - test

test:
  stage: test
  script:
    - pip install pytest pytest-cov
    - pytest --cov=my_module tests/
  artifacts:
    reports:
      cobertura: coverage.xml

Dans cet exemple, le job test installe pytest et pytest-cov, exécute les tests avec couverture de code, et génère un fichier de rapport au format Cobertura (coverage.xml). Ce fichier est ensuite utilisé par GitLab pour afficher les résultats de couverture de code dans l’interface utilisateur.

Post Views: 101
Chloé Renard

Chloé Renard

Spécialiste en Marketing SEO

Chloé Renard est une experte en marketing SEO avec plus de dix ans d'expérience. Elle a aidé de nombreuses entreprises à améliorer leur visibilité en ligne grâce à des stratégies de référencement innovantes et efficaces. Passionnée par l'analyse de données et les tendances du marché, elle est toujours à la pointe des dernières techniques SEO.

Commentaires (3)

Hugo57
Hugo57 il y a 1 mois
Cela semble très prometteur ! J'ai hâte de voir comment cela peut améliorer notre flux de travail.
Marc_96
Marc_96 il y a 1 mois
Merci pour ce guide pratique ! J'ai toujours trouvé fastidieux de lancer les tests manuellement, je vais essayer cette méthode avec GitLab dès que possible.
Marie53
Marie53 il y a 1 mois
Super article ! J'ai hâte de tester cette méthode pour automatiser mes tests Python. Merci pour le guide détaillé !

3 réponses

Laisser un commentaire

0

Mon panier

Chargement...