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:
    - uses: actions/checkout@v2
    - name: Build the container image
      run: docker build . --tag $IMAGE_NAME
    - name: Log into GitHub Container Registry
      run: echo "${{ secrets.REGISTRY_ACCESS_TOKEN }}" | docker login https://ghcr.io -u ${{ github.actor }} --password-stdin
    - name: Push image to GitHub Container Registry
      run: |
        LATEST_TAG=ghcr.io/meeb/$IMAGE_NAME:latest
        docker tag $IMAGE_NAME $LATEST_TAG
        docker push $LATEST_TAG
