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. ?
Poetry simplifie la gestion et le packaging des dépendances Python. Il fournit :
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
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.
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.
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.
poetry install --with dev installe toutes les dépendances du projet, y compris les dépendances de développement.
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.
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.
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
Ajoutez cette étape avant d'installer les dépendances pour éviter de réinstaller les dépendances si rien n'a changé.
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!