clinicedc/edc-appconfig

View on GitHub
.github/workflows/build.yml

Summary

Maintainability
Test Coverage
---
name: build

on: [push, pull_request]

jobs:
  build:
    name: build (Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }})
    runs-on: ubuntu-latest

    strategy:
      fail-fast: false
      matrix:
        python-version: ['3.11', '3.12']
        django-version: ['4.2', '5.0', 'dev']

        exclude:
          - python-version: '3.12'
            django-version: '4.2'
          - python-version: '3.11'
            django-version: 'dev'
    services:
      mysql:
        image: mysql:latest
        env:
          MYSQL_DATABASE: mysql
          MYSQL_ROOT_PASSWORD: mysql
        ports:
          - 3306:3306
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

    steps:
      - name: Install pycups and words dependency
        run: |
          sudo sed -i 's/azure\.//' /etc/apt/sources.list
          sudo apt-get -y update
          sudo apt-get install libcups2-dev wamerican

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

      - name: Get pip cache dir
        id: pip-cache
        run: |
          echo "dir=$(pip cache dir)" >>$GITHUB_OUTPUT

      - name: Cache
        uses: actions/cache@v4
        with:
          path: ${{ steps.pip-cache.outputs.dir }}
          key:
            ${{ matrix.python-version }}-v1-${{ hashFiles('**/setup.py') }}-${{ hashFiles('**/tox.ini') }}
          restore-keys: |
            ${{ matrix.python-version }}-v1-

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          python -m pip install -r https://raw.githubusercontent.com/clinicedc/edc/develop/requirements.tests/tox.txt


      - name: Tox tests
        run: |
          tox -v
        env:
          DJANGO: ${{ matrix.django-version }}

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          name: Python ${{ matrix.python-version }}