# Copyright 2023 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

name: PkgCI

on:
  workflow_dispatch:
  pull_request:
  push:
    branches:
      - main
      # Experimental branches can also get packages and tests automatically.
      - exppkg-*
      # Short term feature branches:
      - sdxl

concurrency:
  # A PR number if a pull request and otherwise the commit hash. This cancels
  # queued and in-progress runs for the same PR (presubmit) or commit
  # (postsubmit). The workflow name is prepended to avoid conflicts between
  # different workflows.
  group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
  cancel-in-progress: true

jobs:
  setup:
    uses: ./.github/workflows/setup.yml

  build_packages:
    name: Build Packages
    needs: setup
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'build_packages')
    uses: ./.github/workflows/pkgci_build_packages.yml
    with:
      package_version: 0.dev1

  unit_test:
    name: Unit Test
    needs: [setup, build_packages]
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'unit_test')
    uses: ./.github/workflows/pkgci_unit_test.yml

  regression_test:
    name: Regression Test
    needs: [setup, build_packages]
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'regression_test')
    uses: ./.github/workflows/pkgci_regression_test.yml

  test_amd_mi250:
    name: Test AMD MI250
    needs: [setup, build_packages]
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'test_amd_mi250')
    uses: ./.github/workflows/pkgci_test_amd_mi250.yml

  test_amd_mi300:
    name: Test AMD MI300
    needs: [setup, build_packages]
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'test_amd_mi300')
    uses: ./.github/workflows/pkgci_test_amd_mi300.yml

  test_amd_w7900:
    name: Test AMD W7900
    needs: [setup, build_packages]
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'test_amd_w7900')
    uses: ./.github/workflows/pkgci_test_amd_w7900.yml

  test_nvidia_t4:
    name: Test NVIDIA T4
    needs: [setup, build_packages]
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'test_nvidia_t4')
    uses: ./.github/workflows/pkgci_test_nvidia_t4.yml

  test_tensorflow_cpu:
    name: Test TensorFlow CPU
    needs: [setup, build_packages]
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'test_tensorflow_cpu')
    uses: ./.github/workflows/pkgci_test_tensorflow_cpu.yml

  test_android:
    needs: [setup, build_packages]
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'test_android')
    uses: ./.github/workflows/pkgci_test_android.yml
    with:
      write-caches: ${{ needs.setup.outputs.write-caches }}
