volopivoshenko/poetry-plugin-dotenv

View on GitHub
.github/workflows/ci.yaml

Summary

Maintainability
Test Coverage
# Requires GitHub secrets
# - CODECOV_TOKEN

name: CI

on:
  pull_request:
    branches: ["main"]
  push:
    branches: ["main"]

jobs:
  linters:
    name: Run linters
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        id: checkout-repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install Python
        id: install-python
        uses: actions/setup-python@v5
        with:
          python-version: 3.11
          architecture: x64

      - name: Install dependencies
        id: install-dependencies
        run: |
          python -m pip install -U pip setuptools poetry
          python -m poetry install
          python -m poetry self add 'poethepoet[poetry_plugin]'

      - name: Run linters
        id: run-linters
        run: |
          python -m poetry lint

  tests:
    name: Run tests
    needs: linters
    runs-on: ${{ matrix.os }}

    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
        python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]

    steps:
      - name: Checkout repository
        id: checkout-repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install Python
        id: install-python
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install dependencies
        id: install-dependencies
        run: |
          python -m pip install -U pip setuptools poetry
          python -m poetry install --only main --only tests
          python -m poetry self add 'poethepoet[poetry_plugin]'

      - name: Run tests
        id: run-tests
        run: |
          python -m poetry tests

      - name: Upload coverage to Codecov
        id: upload-coverage-to-codecov
        uses: codecov/codecov-action@v4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          name: ${{ matrix.os }}, ${{ matrix.python-version }}