name: Run Django tests for TubeSync

env:
  IMAGE_NAME: tubesync

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.7, 3.8, 3.9]
    steps:
      - uses: actions/checkout@v2
      - name: Install Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install pipenv
          pipenv install --system
      - name: Set up Django environment
        run: cp tubesync/tubesync/local_settings.py.example tubesync/tubesync/local_settings.py
      - name: Run Django tests
        run: cd tubesync && python3 manage.py test --verbosity=2
  containerise:
    runs-on: ubuntu-latest
    steps:
    - name: Set up QEMU
      uses: docker/setup-qemu-action@v1
    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v1
    - name: Log into GitHub Container Registry
      run: echo "${{ secrets.REGISTRY_ACCESS_TOKEN }}" | docker login https://ghcr.io -u ${{ github.actor }} --password-stdin
    - name: Build and push
      uses: docker/build-push-action@v2
      with:
        platforms: linux/amd64
        push: true
        tags: ghcr.io/meeb/${{ env.IMAGE_NAME }}:latest
        cache-from: type=registry,ref=ghcr.io/meeb/${{ env.IMAGE_NAME }}:latest
        cache-to: type=inline
        build-args: |
          IMAGE_NAME=${{ env.IMAGE_NAME }}