TabbycatDebate/tabbycat

View on GitHub
.github/workflows/django.yml

Summary

Maintainability
Test Coverage
name: Django CI

on:
  push:
    branches:
    - '**'
    - '!l10n_develop'
  pull_request:
    branches:
    - '**'
    - '!l10n_develop'

jobs:
  build-ubuntu:

    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [3.7, 3.8, 3.9]
        node-version: [12.x]

    services:
      postgres:
        image: postgres:11
        env:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: postgres
        ports: ['5432:5432']
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5

    steps:
    - uses: actions/checkout@v2
    - name: Cache node modules
      uses: actions/cache@v2
      env:
        cache-name: cache-node-modules
      with:
        # npm cache files are stored in `~/.npm` on Linux/macOS
        path: ~/.npm
        key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
        restore-keys: |
          ${{ runner.os }}-build-${{ env.cache-name }}-
          ${{ runner.os }}-build-
          ${{ runner.os }}-
    - name: Cache pip modules
      uses: actions/cache@v2
      with:
        path: ~/.cache/pip
        key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - name: Install Dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r ./config/requirements_development.txt
        npm ci
    - name: Run Linting
      run: npm run lint
    - name: Run Build and Collect
      run: |
        npm run build
        python ./tabbycat/manage.py collectstatic --noinput -v 0
    - name: Run Migrations
      run: python ./tabbycat/manage.py migrate
    - name: Run Tests
      run: python tabbycat/manage.py test -v 2 --exclude-tag=selenium

  build-docker-dev:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 1
      - name: Build Docker image (dev)
        run: docker-compose -f docker-compose.yml build

  build-docker-prod:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 1
      - name: Build Docker image (prod)
        run: docker-compose -f docker-compose.yml -f docker-compose.prod.yml build