name: Django CI on: push: branches: [master] pull_request: branches: [master] jobs: build: if: "!contains(github.event.head_commit.message, '[ci skip]')" runs-on: ubuntu-latest strategy: matrix: python: [3.9] experimental: [false] include: - python: 3.10.0-alpha.5 experimental: true continue-on-error: ${{ matrix.experimental }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v2 - name: Cache Static Files id: static-cache uses: actions/cache@v2 with: path: 'static/' key: ${{ hashFiles('package-lock.json') }}-${{ hashFiles('pipeline/source_assets') }} - uses: bahmutov/npm-install@v1 if: steps.static-cache.outputs.cache-hit != 'true' - run: node node_modules/gulp/bin/gulp build if: steps.static-cache.outputs.cache-hit != 'true' - name: Set up Python uses: actions/setup-python@v2 with: python-version: ${{ matrix.python }} - name: Cache python deps uses: actions/cache@v2 with: path: ${{ env.pythonLocation }} key: ${{ env.pythonLocation }}-${{ hashFiles('Pipfile.lock') }} - name: Install Dependencies run: | python -m pip install --upgrade pip pip install pipenv pipenv install -d - name: Basic Checks run: | pipenv run pycodestyle . --exclude=migrations,node_modules pipenv run python manage.py check pipenv run python manage.py makemigrations --check --dry-run pipenv run python manage.py collectstatic --noinput - name: Run Tests run: pipenv run pytest --cov -n auto - uses: actions/upload-artifact@v2 if: failure() with: name: failure-screenshots ${{ matrix.test-group }} path: screenshots/ retention-days: 5 - name: Coveralls run: pipenv run coveralls --service=github