Maison > développement back-end > Tutoriel Python > Comment configurer GitHub Actions CI pour Python à l'aide de poésie sur plusieurs versions

Comment configurer GitHub Actions CI pour Python à l'aide de poésie sur plusieurs versions

Linda Hamilton
Libérer: 2025-01-06 18:36:48
original
494 Les gens l'ont consulté

How to Configure GitHub Actions CI for Python Using Poetry on Multiple Versions

Comment configurer GitHub Actions CI pour Python en utilisant Poetry sur plusieurs versions ?

Découvrez comment configurer un pipeline CI GitHub Actions robuste pour votre projet Python à l'aide de Poetry, en testant plusieurs versions de Python pour garantir la compatibilité et la fiabilité.

L'intégration continue (CI) est un élément essentiel de tout flux de travail de développement logiciel moderne. Si vous gérez des dépendances et des environnements avec Poetry, ce guide vous aidera à configurer un pipeline CI GitHub Actions robuste pour votre projet Python sur plusieurs versions de Python. Pour un exemple pratique, vous pouvez vous référer au code réel dans ce référentiel GitHub : jdevto/python-poetry-hello. ?


Pourquoi la poésie pour les projets Python ? ?

Poetry simplifie la gestion et le packaging des dépendances Python. Il fournit :

  • Un fichier pyproject.toml clair pour les dépendances et les métadonnées du projet.
  • Un système de gestion d'environnement virtuel.
  • Commandes pour créer, publier et gérer les dépendances.

Configuration des actions GitHub pour Python à l'aide de poésie sur plusieurs versions

Vous trouverez ci-dessous une configuration complète du workflow GitHub Actions pour automatiser votre pipeline CI avec Poetry sur les versions 3.9 à 3.13 de Python. Cet exemple comprend trois types de déclencheurs : sur push vers la branche principale, sur demandes d'extraction et sur une tâche cron quotidienne planifiée. Vous pouvez ajuster ces déclencheurs en fonction de vos propres besoins.

name: ci

on:
  push:
    branches:
      - main
  pull_request:
  schedule:
    - cron: 0 12 * * *
  workflow_dispatch:

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
      fail-fast: false

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install Poetry
        run: |
          curl -sSL https://install.python-poetry.org | python3 -
          echo "PATH=$HOME/.local/bin:$PATH" >> $GITHUB_ENV

      - name: Install dependencies with Poetry
        run: |
          cd hello-world
          poetry install --with dev

      - name: Set PYTHONPATH to include the source directory
        run: echo "PYTHONPATH=$PWD/hello-world" >> $GITHUB_ENV

      - name: Run tests
        run: |
          cd hello-world
          poetry run pytest --cov=hello-world --cov-report=term-missing
Copier après la connexion
Copier après la connexion

Étapes clés du flux de travail

1. Code de paiement

L'action actions/checkout@v4 récupère votre code dans le référentiel afin qu'il puisse être utilisé dans les étapes suivantes.

2. Configurer Python

L'action actions/setup-python@v4 installe les versions Python spécifiées à l'aide d'une stratégie matricielle, permettant aux tests de s'exécuter sur plusieurs versions de Python.

3. Installer la poésie

Le script installe la dernière version de Poetry en utilisant sa méthode d'installation officielle et garantit qu'elle est ajoutée au PATH.

4. Installer les dépendances

poetry install --with dev installe toutes les dépendances du projet, y compris les dépendances de développement.

5. Définir PYTHONPATH

La variable d'environnement PYTHONPATH est configurée pour inclure le répertoire src, permettant ainsi des importations de modules appropriées pendant les tests.

6. Exécuter des tests

poetry run pytest exécute les tests définis dans votre projet, avec les rapports de couverture activés via --cov=src --cov-report=term-missing.


Améliorations

1. Ajouter une mise en cache pour les dépendances

Pour accélérer votre flux de travail, vous pouvez mettre en cache les dépendances de Poetry :

name: ci

on:
  push:
    branches:
      - main
  pull_request:
  schedule:
    - cron: 0 12 * * *
  workflow_dispatch:

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
      fail-fast: false

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install Poetry
        run: |
          curl -sSL https://install.python-poetry.org | python3 -
          echo "PATH=$HOME/.local/bin:$PATH" >> $GITHUB_ENV

      - name: Install dependencies with Poetry
        run: |
          cd hello-world
          poetry install --with dev

      - name: Set PYTHONPATH to include the source directory
        run: echo "PYTHONPATH=$PWD/hello-world" >> $GITHUB_ENV

      - name: Run tests
        run: |
          cd hello-world
          poetry run pytest --cov=hello-world --cov-report=term-missing
Copier après la connexion
Copier après la connexion

Ajoutez cette étape avant d'installer les dépendances pour éviter de réinstaller les dépendances si rien n'a changé.


Conclusion

En configurant ce workflow GitHub Actions, vous pouvez automatiser les tests sur plusieurs versions de Python et vous assurer que votre projet Python utilisant Poetry est toujours en parfait état. Cette configuration comprend des étapes pour installer les dépendances, exécuter des tests et même mettre en cache les dépendances pour des builds plus rapides. ?

Si vous avez des questions ou des suggestions, n'hésitez pas à partager ! ? Pour plus d'inspiration et un exemple fonctionnel, visitez le référentiel GitHub : jdevto/python-poetry-hello.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal