---
  name: 'build container images tests'
  
  on:
    pull_request:
  
  concurrency:
    group: ci-${{ github.head_ref || github.ref }}-${{ github.repository }}
    cancel-in-progress: true
  
  jobs:
    image-build:
      uses: ./.github/workflows/image_build.yml
      with:
        tag-latest: ${{ matrix.tag-latest }}
        tag-suffix: ${{ matrix.tag-suffix }}
        build-type: ${{ matrix.build-type }}
        cuda-major-version: ${{ matrix.cuda-major-version }}
        cuda-minor-version: ${{ matrix.cuda-minor-version }}
        platforms: ${{ matrix.platforms }}
        runs-on: ${{ matrix.runs-on }}
        base-image: ${{ matrix.base-image }}
        grpc-base-image: ${{ matrix.grpc-base-image }}
        makeflags: ${{ matrix.makeflags }}
        ubuntu-version: ${{ matrix.ubuntu-version }}
      secrets:
        dockerUsername: ${{ secrets.DOCKERHUB_USERNAME }}
        dockerPassword: ${{ secrets.DOCKERHUB_PASSWORD }}
        quayUsername: ${{ secrets.LOCALAI_REGISTRY_USERNAME }}
        quayPassword: ${{ secrets.LOCALAI_REGISTRY_PASSWORD }}
      strategy:
        # Pushing with all jobs in parallel
        # eats the bandwidth of all the nodes
        max-parallel: ${{ github.event_name != 'pull_request' && 4 || 8 }}
        fail-fast: false
        matrix:
          include:
            - build-type: 'cublas'
              cuda-major-version: "12"
              cuda-minor-version: "8"
              platforms: 'linux/amd64'
              tag-latest: 'false'
              tag-suffix: '-gpu-nvidia-cuda-12'
              runs-on: 'ubuntu-latest'
              base-image: "ubuntu:24.04"
              makeflags: "--jobs=3 --output-sync=target"
              ubuntu-version: '2404'
            - build-type: 'cublas'
              cuda-major-version: "13"
              cuda-minor-version: "0"
              platforms: 'linux/amd64'
              tag-latest: 'false'
              tag-suffix: '-gpu-nvidia-cuda-13'
              runs-on: 'ubuntu-latest'
              base-image: "ubuntu:22.04"
              makeflags: "--jobs=3 --output-sync=target"
              ubuntu-version: '2404'
            - build-type: 'hipblas'
              platforms: 'linux/amd64'
              tag-latest: 'false'
              tag-suffix: '-hipblas'
              base-image: "rocm/dev-ubuntu-24.04:6.4.4"
              grpc-base-image: "ubuntu:24.04"
              runs-on: 'ubuntu-latest'
              makeflags: "--jobs=3 --output-sync=target"
              ubuntu-version: '2404'
            - build-type: 'sycl'
              platforms: 'linux/amd64'
              tag-latest: 'false'
              base-image: "intel/oneapi-basekit:2025.3.0-0-devel-ubuntu24.04"
              grpc-base-image: "ubuntu:24.04"
              tag-suffix: 'sycl'
              runs-on: 'ubuntu-latest'
              makeflags: "--jobs=3 --output-sync=target"
              ubuntu-version: '2404'
            - build-type: 'vulkan'
              platforms: 'linux/amd64,linux/arm64'
              tag-latest: 'false'
              tag-suffix: '-vulkan-core'
              runs-on: 'ubuntu-latest'
              base-image: "ubuntu:24.04"
              makeflags: "--jobs=4 --output-sync=target"
              ubuntu-version: '2404'
            - build-type: 'cublas'
              cuda-major-version: "13"
              cuda-minor-version: "0"
              platforms: 'linux/arm64'
              tag-latest: 'false'
              tag-suffix: '-nvidia-l4t-arm64-cuda-13'
              base-image: "ubuntu:24.04"
              runs-on: 'ubuntu-24.04-arm'
              makeflags: "--jobs=4 --output-sync=target"
              skip-drivers: 'false'
              ubuntu-version: '2404'
  