name: "CI for builds"

on:
  push:
    branches: [ master ]
  #
  # Run this action periodically to keep browsers up-to-date
  # even if there is no activity in this repo.
  #
  schedule:
    - cron: "43 2 * * 1"

env:
  DOCKER_IMAGE: m1k1o/neko

jobs:
  build-base:
    runs-on: ubuntu-latest
    #
    # do not run on forks
    #
    if: github.repository_owner == 'm1k1o'
    steps:
      - name: Check Out Repo
        uses: actions/checkout@v2

      - name: Login to Docker Hub
        run: |
          docker login --username "${DOCKER_USERNAME}" --password-stdin "${DOCKER_REGISTRY}" <<< "${DOCKER_TOKEN}"
        env:
          DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }}
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}

      - name: Build base
        run: |
          BUILD_IMAGE=${DOCKER_IMAGE} .docker/build ${DOCKER_TAG}
          docker push ${DOCKER_IMAGE}:${DOCKER_TAG}
        env:
          DOCKER_TAG: base

  build:
    runs-on: ubuntu-latest
    #
    # do not run on forks
    #
    if: github.repository_owner == 'm1k1o'
    needs: [ build-base ]
    strategy:
      # Will build all images even if some fail.
      fail-fast: false
      matrix:
        tags: [ firefox, chromium, google-chrome, ungoogled-chromium, microsoft-edge, brave, vivaldi, tor-browser, remmina, vlc, xfce ]
    env:
      DOCKER_TAG: ${{ matrix.tags }}
    steps:
      - name: Check Out Repo
        uses: actions/checkout@v2

      - name: Login to Docker Hub
        run: |
          docker login --username "${DOCKER_USERNAME}" --password-stdin "${DOCKER_REGISTRY}" <<< "${DOCKER_TOKEN}"
        env:
          DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }}
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}

      - name: Build container
        run: |
          BUILD_IMAGE=${DOCKER_IMAGE} .docker/build ${DOCKER_TAG}
          docker push ${DOCKER_IMAGE}:${DOCKER_TAG}

      - name: Push latest tag
        if: ${{ matrix.tags == 'firefox' }}
        run: |
          docker pull ${DOCKER_IMAGE}:${DOCKER_TAG}
          docker tag ${DOCKER_IMAGE}:${DOCKER_TAG} ${DOCKER_IMAGE}:latest
          docker push ${DOCKER_IMAGE}:latest
