name: passbook-release
on:
  release

jobs:
  # Build
  build-server:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Docker Login Registry
        env:
          DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
        run: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
      - name: Building Docker Image
        run: docker build
          --no-cache
          -t beryju/passbook:0.9.0-pre2
          -t beryju/passbook:latest
          -f Dockerfile .
      - name: Push Docker Container to Registry (versioned)
        run: docker push beryju/passbook:0.9.0-pre2
      - name: Push Docker Container to Registry (latest)
        run: docker push beryju/passbook:latest
  build-gatekeeper:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Docker Login Registry
        env:
          DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
        run: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
      - name: Building Docker Image
        run: |
          cd gatekeeper
          docker build \
          --no-cache \
          -t beryju/passbook-gatekeeper:0.9.0-pre2 \
          -t beryju/passbook-gatekeeper:latest \
          -f Dockerfile .
      - name: Push Docker Container to Registry (versioned)
        run: docker push beryju/passbook-gatekeeper:0.9.0-pre2
      - name: Push Docker Container to Registry (latest)
        run: docker push beryju/passbook-gatekeeper:latest
  build-static:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:latest
        env:
          POSTGRES_DB: passbook
          POSTGRES_USER: passbook
          POSTGRES_PASSWORD: "EK-5jnKfjrGRm<77"
      redis:
        image: redis:latest
    steps:
      - uses: actions/checkout@v1
      - name: Docker Login Registry
        env:
          DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
        run: docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
      - name: Building Docker Image
        run: docker build
          --no-cache
          --network=$(docker network ls | grep github | awk '{print $1}')
          -t beryju/passbook-static:0.9.0-pre2
          -t beryju/passbook-static:latest
          -f static.Dockerfile .
      - name: Push Docker Container to Registry (versioned)
        run: docker push beryju/passbook-static:0.9.0-pre2
      - name: Push Docker Container to Registry (latest)
        run: docker push beryju/passbook-static:latest
  test-release:
    needs:
      - build-server
      - build-static
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Run test suite in final docker images
        run: |
          docker-compose pull -q
          docker-compose up --no-start
          docker-compose start postgresql redis
          docker-compose run -u root server bash -c "pip install --no-cache -r requirements-dev.txt && ./manage.py test"