name: CI on: push: branches: master pull_request: branches: master schedule: # * is a special character in YAML so you have to quote this string - cron: '0 3 * * 6' workflow_dispatch: inputs: reason: description: 'Reason' required: false default: 'Manual trigger' jobs: Tests: runs-on: ubuntu-20.04 strategy: matrix: python-version: [3.6, 3.7, 3.8, 3.9] requirements-level: [min, pypi] db-service: [postgresql12] search-service: [elasticsearch7] exclude: - python-version: 3.6 requirements-level: pypi - python-version: 3.7 requirements-level: min - python-version: 3.8 requirements-level: min - python-version: 3.9 requirements-level: min - db-service: postgresql12 requirements-level: min - search-service: elasticsearch7 requirements-level: min include: - db-service: postgresql12 DB_EXTRAS: "postgresql" - search-service: elasticsearch7 SEARCH_EXTRAS: "elasticsearch7" env: DB: ${{ matrix.db-service }} SEARCH: ${{ matrix.search-service }} EXTRAS: all,${{ matrix.DB_EXTRAS }},${{ matrix.SEARCH_EXTRAS }} steps: - name: Checkout uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Generate dependencies run: | python -m pip install --upgrade pip setuptools py wheel requirements-builder requirements-builder -e "$EXTRAS" --level=${{ matrix.requirements-level }} setup.py > .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt - name: Cache pip uses: actions/cache@v2 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('.${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt') }} - name: Install dependencies run: | pip install -r .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt pip install ".[$EXTRAS]" pip freeze docker --version docker-compose --version - name: Run tests run: | ./run-tests.sh