# 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
  #############################################################################

  # Disabled while no `nodai-amdgpu-mi250-x86-64` runners are online
  #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_sharktank:
    name: Test Sharktank
    needs: [setup, build_packages]
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'test_sharktank')
    uses: ./.github/workflows/pkgci_test_sharktank.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

  test_pjrt:
    name: Test PJRT plugin
    needs: [setup, build_packages]
    if: contains(fromJson(needs.setup.outputs.enabled-jobs), 'test_pjrt')
    uses: ./.github/workflows/pkgci_test_pjrt.yml

  ##############################################################################

  # Aggregate job status and alerting on failures.
  pkgci_summary:
    if: always()
    needs:
      - setup
      - build_packages
      - unit_test
      - regression_test
      # - test_amd_mi250
      - test_amd_mi300
      - test_amd_w7900
      # - test_nvidia_t4
      - test_android
      - test_riscv64
      - test_onnx
      - test_sharktank
      - test_tensorflow
      - test_pjrt
    uses: ./.github/workflows/workflow_summary.yml
    secrets: inherit
    with:
      jobs-json: ${{ toJson(needs) }}
