name: Test package on: push: pull_request: workflow_dispatch: jobs: create_matrix: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Create matrix uses: fabiocaccamo/create-matrix-action@v1 with: matrix: | python-version {2.7}, django-version {1.8,1.9,1.10,1.11}, database {sqlite,postgres} python-version {3.6}, django-version {1.8,1.9,1.10,1.11,2.0,2.1,2.2,3.0,3.1,3.2}, database {sqlite,postgres} python-version {3.7}, django-version {2.0,2.1,2.2,3.0,3.1,3.2}, database {sqlite,postgres} python-version {3.8}, django-version {2.2,3.0,3.1,3.2}, database {sqlite,postgres} python-version {3.9}, django-version {2.2,3.0,3.1,3.2}, database {sqlite,postgres} python-version {3.10}, django-version {3.2,4.0}, database {sqlite,postgres} - name: Set matrix output variable id: set_matrix run: | echo "::set-output name=matrix::$(cat ./matrix.json)" outputs: matrix: ${{ steps.set_matrix.outputs.matrix }} run_tests: needs: create_matrix runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: ${{fromJson(needs.create_matrix.outputs.matrix)}} services: postgres: image: postgres:latest env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres ports: - 5432:5432 # needed because the postgres container does not provide a healthcheck options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v1 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} cache: 'pip' - name: Install psycopg2 prerequisites run: sudo apt-get install libpq-dev - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} cache: 'pip' - name: Upgrade pip version run: | pip install pip --upgrade - name: Install django run: | pip install "Django ~= ${{ matrix.django-version }}" - name: Install test requirements run: | pip install -r requirements-test.txt - name: Run tests env: DATABASE_ENGINE: ${{ matrix.database }} run: | coverage run --append --source=admin_interface setup.py test coverage xml -o ./coverage.xml - name: Upload coverage to Codecov uses: codecov/codecov-action@v2 with: fail_ci_if_error: false files: ./coverage.xml verbose: true