name: Spark Integration Test

# Controls when the workflow will run
on:
  push:
    branches: [ "main", "branch-*" ]
  pull_request:
    branches: [ "main", "branch-*" ]

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  changes:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: dorny/paths-filter@v2
        id: filter
        with:
          filters: |
            source_changes:
              - .github/**
              - api/**
              - bin/**
              - catalogs/**
              - clients/client-java/**
              - clients/client-java-runtime/**
              - common/**
              - conf/**
              - core/**
              - dev/**
              - gradle/**
              - iceberg/**
              - integration-test-common/**
              - meta/**
              - scripts/**
              - server/**
              - server-common/**
              - spark-connector/**
              - build.gradle.kts
              - gradle.properties
              - gradlew
              - setting.gradle.kts
    outputs:
      source_changes: ${{ steps.filter.outputs.source_changes }}

  SparkIT-on-push:
    needs: changes
    if: (github.event_name == 'push' && needs.changes.outputs.source_changes == 'true')
    strategy:
      matrix:
        # Integration test for AMD64 architecture
        architecture: [linux/amd64]
        java-version: [ 8, 11, 17 ]
        scala-version: [ 2.12 ]
        test-mode: [ embedded, deploy ]
    uses: ./.github/workflows/spark-integration-test-action.yml
    with:
      architecture: ${{ matrix.architecture }}
      java-version: ${{ matrix.java-version }}
      scala-version: ${{ matrix.scala-version }}
      test-mode: ${{ matrix.test-mode }}

  SparkIT-on-pr:
    needs: changes
    if: (github.event_name == 'pull_request' && needs.changes.outputs.source_changes == 'true')
    strategy:
      matrix:
        # Integration test for AMD64 architecture
        architecture: [linux/amd64]
        java-version: [ 17 ]
        scala-version: [ 2.12 ]
        test-mode: [ embedded, deploy ]
    uses: ./.github/workflows/spark-integration-test-action.yml
    with:
      architecture: ${{ matrix.architecture }}
      java-version: ${{ matrix.java-version }}
      scala-version: ${{ matrix.scala-version }}
      test-mode: ${{ matrix.test-mode }}