# 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

  # Package sanity checks.
  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

  # Tests for large programs.
  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

  ########################### Hardware/accelerators ###########################
  # Jobs that run unit tests on special hardware platforms or accelerators
  #############################################################################

  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

  # TODO(#18238): migrate to new runner cluster
  # 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_android:
    name: 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 }}

  test_riscv64:
    name: Test RISC-V 64
    needs: [setup, build_packages]
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'test_riscv64')
    uses: ./.github/workflows/pkgci_test_riscv64.yml
    with:
      write-caches: ${{ needs.setup.outputs.write-caches }}

  ################################# Frameworks ################################
  # Jobs that test machine learning frameworks or their Python APIs
  #############################################################################

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

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