name: Application 

on:
  push:
    branches: [ main ]
    paths: ['karavan-app/**', 'karavan-core/**', 'karavan-designer/**', '.github/workflows/app.yml']
  workflow_dispatch:
  pull_request:
    branches: [ main ]

env:
  REGISTRY: ghcr.io
  TAG: 4.14.2

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Karavan
        uses: actions/checkout@v4
        with:
          path: karavan

      - name: Set up JDK 21
        uses: actions/setup-java@v4
        with:
          distribution: adopt
          java-version: 21

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


      - name: Set up Node
        uses: actions/setup-node@v4
        with:
          node-version: '22'

      - name: Create Multi Platfrom Builder
        run: docker buildx create --use --platform=linux/arm64,linux/amd64 --name multi-platform-builder

      - name: Build application
        working-directory: ./karavan/karavan-app
        run: |
          mvn package -DskipTests \
          -Dquarkus.quinoa.package-manager-install=false \
          -Dquarkus.container-image.build=true \
          -Dquarkus.container-image.push=${{ github.event_name != 'pull_request' }} \
          -Dquarkus.docker.buildx.platform=linux/amd64,linux/arm64 \
          -Dquarkus.container-image.image=${{ env.REGISTRY }}/${GITHUB_REPOSITORY}:${{ env.TAG }} \
          -Dquarkus.container-image.username=${{ github.actor }} \
          -Dquarkus.container-image.password=${{ secrets.GITHUB_TOKEN }}
        if: ${{ github.ref == 'refs/heads/main' }}
