name: Java

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:

  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Check out code
        uses: actions/checkout@v4

      - name: Set up JDK 1.8
        uses: actions/setup-java@v2
        with:
          version: 1.8
          jdk: true

      - name: Dump Github context
        env:
          GITHUB_CONTEXT: '${{ toJSON(github) }}'
        run: |
          echo " hello ${{ github.event.commits[0].id }}"

      - name: Cache local Maven repository
        uses: actions/cache@v2
        with:
          path: ~/.m2/repository
          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
          restore-keys: |
            ${{ runner.os }}-maven-

      - uses: actions/cache@v2
        with:
          path: |
            ~/.gradle/caches
            ~/.gradle/wrapper
          key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
          restore-keys: |
            ${{ runner.os }}-gradle-

      - name: Build with Gradle
        run: |
          chmod +x gradlew
          ./gradlew build
      
      - name: Extract files from jar
        run: |
          mkdir -p build/libs
      
      - name: build docker image and push
        env:
          DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
          DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
          DOCKER_REGISTRY: ${{ secrets.DOCKER_REGISTRY }}
        run: |
          docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} ${{ secrets.DOCKER_REGISTRY }}
      
      - name: set buildx
        uses: crazy-max/ghaction-docker-buildx@v1
        with:
          buildx-version: latest

      - name: push docker image
        run: |
        cd build && \
        fullCommit="${{ github.event.commits[0].id }}" && \
        docker buildx build \
          --platform linux/amd64,linux/arm64,linux/arm/v7 \
          --tag ${{ secrets.DOCKER_REGISTRY }}/{{ github.repository.owner.login }}/{{ github.repository.name }}:${{ fullCommit: 0:7 }} \
          --progress=plain \
          --file Dockerfile . \
          --output "type=image,push=true"
          --push

      - name: deploy to docker