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