name: Maven CI/CD

on:
  push:
    branches: [master]
    tags: [v*]
  workflow_dispatch:

jobs:
  build_and_publish:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 11
        uses: actions/setup-java@v2
        with:
          java-version: "11"
          distribution: "temurin"
          cache: maven
      - name: Install test dependencies
        run: sudo apt-get update && sudo apt-get -y -q --no-install-recommends install ffmpeg mediainfo tesseract-ocr tesseract-ocr-deu
      - name: Build with Maven
        run: mvn --batch-mode -Pprod clean install
      - name: Upload war artifact
        uses: actions/upload-artifact@v2
        with:
          name: docs-web-ci.war
          path: docs-web/target/docs*.war

  build_docker_image:
    name: Publish to Docker Hub
    runs-on: ubuntu-latest
    needs: [build_and_publish]

    steps:
      - 
        name: Checkout
        uses: actions/checkout@v2
      - 
        name: Download war artifact
        uses: actions/download-artifact@v2
        with:
          name: docs-web-ci.war
          path: docs-web/target
      - 
        name: Setup up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - 
        name: Login to DockerHub
        if: github.event_name != 'pull_request'
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - 
        name: Populate Docker metadata
        id: metadata
        uses: docker/metadata-action@v3
        with:
          images: sismics/docs
          flavor: |
            latest=false
          tags: |
            type=ref,event=tag
            type=raw,value=latest,enable=${{ github.ref_type != 'tag' }}
          labels: |
            org.opencontainers.image.title = Teedy
            org.opencontainers.image.description = Teedy is an open source, lightweight document management system for individuals and businesses.
            org.opencontainers.image.created = ${{ github.event_created_at }}
            org.opencontainers.image.author = Sismics
            org.opencontainers.image.url = https://teedy.io/
            org.opencontainers.image.vendor = Sismics
            org.opencontainers.image.license = GPLv2
            org.opencontainers.image.version = ${{ github.event_head_commit.id }}
      - 
        name: Build and push
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          context: .
          push: ${{ github.event_name != 'pull_request' }}
          tags: ${{ steps.metadata.outputs.tags }}
          labels: ${{ steps.metadata.outputs.labels }}