# Copyright 2022 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: CI

# A few notes:
#
# GitHub actions don't have variables or even support normal yaml anchors (they
# are specially disabled because...reasons?):
# See https://github.com/github-community/community/discussions/4501
# https://github.community/t/support-for-yaml-anchors/16128/92
# https://github.com/actions/runner/issues/1182
#
# Neither does it have any variables that are available everywhere. The
# top-level `env` field is available in many places, but not all
# See https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability
# and https://github.com/community/community/discussions/27370
#
# So there are some odd patterns that are repeated in many places. To avoid
# repeating the comments, they are mentioned here:
#
# - self-hosted always has to be listed first in a runs-on block:
# https://docs.github.com/en/actions/hosting-your-own-runners/using-self-hosted-runners-in-a-workflow
#
# - We have to do a weird hack to get a pseudo-ternary operator. See
# https://github.com/actions/runner/issues/409, hence patterns like:
# runner-group=${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}

on:
  workflow_dispatch:
  pull_request:
  push:
    branches:
      - main

env:
  BUCKET: gs://iree-github-actions-${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}-artifacts

jobs:
  build_runtime:
    runs-on: ubuntu-20.04
    env:
      BUILD_DIR: build-runtime
    outputs:
      # Pass through the build directory as output so it's available to
      # dependent jobs.
      build-dir: ${{ env.BUILD_DIR }}
    steps:
      - name: "Checking out repository"
        uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2
        with:
          submodules: true
      - name: "Building runtime"
        run: |
          ./build_tools/github_actions/docker_run.sh \
            gcr.io/iree-oss/base@sha256:5d43683c6b50aebe1fca6c85f2012f3b0fa153bf4dd268e8767b619b1891423a \
            ./build_tools/cmake/build_runtime.sh \
            "${BUILD_DIR}"
      # Using a tar archive is necessary to preserve file permissions. See
      # https://github.com/actions/upload-artifact#maintaining-file-permissions-and-case-sensitive-files
      # The upload action already does its own gzip compression, so no need to
      # do our own.
      - name: "Create build dir archive"
        run: tar -cf ${BUILD_DIR}.tar ${BUILD_DIR}
      - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
        with:
          name: "${{ env.BUILD_DIR }}.tar"
          path: "${{ env.BUILD_DIR }}.tar"

  test_runtime:
    needs: build_runtime
    runs-on: ubuntu-20.04
    env:
      BUILD_DIR: ${{ needs.build_runtime.outputs.build-dir }}
    steps:
      - name: "Checking out repository"
        uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2
        with:
          submodules: true
      - name: "Downloading runtime build directory"
        uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 # v3.0.0
        with:
          name: "${{ env.BUILD_DIR }}.tar"
      - name: "Extracting archive"
        run: tar -xf ${BUILD_DIR}.tar
      - name: "Testing runtime"
        run: |
          ./build_tools/github_actions/docker_run.sh \
            --env IREE_VULKAN_DISABLE=1 \
            gcr.io/iree-oss/base@sha256:5d43683c6b50aebe1fca6c85f2012f3b0fa153bf4dd268e8767b619b1891423a \
            ./build_tools/cmake/ctest_all.sh \
            "${BUILD_DIR}"

  build_all:
    runs-on:
      # Hacks, and order matters. See the comment at the top of the file.
      - self-hosted
      - runner-group=${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}
      - cpu
      - os-family=Linux
    env:
      BUILD_DIR: full-build-dir
    outputs:
      # Pass through the build directory as output so it's available to
      # dependent jobs.
      build-dir: ${{ env.BUILD_DIR }}
      build-dir-archive: ${{ steps.archive.outputs.build-dir-archive }}
      gcs-artifact: ${{ steps.upload.outputs.gcs-artifact }}
    steps:
      - name: "Checking out repository"
        uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2
        with:
          submodules: true
      - name: "Building IREE"
        run: |
          ./build_tools/github_actions/docker_run.sh \
            gcr.io/iree-oss/base@sha256:5d43683c6b50aebe1fca6c85f2012f3b0fa153bf4dd268e8767b619b1891423a \
            ./build_tools/cmake/build_all.sh \
            "${BUILD_DIR}"
      # Things get more complicated here than when we're just building the
      # runtime. The build directory is way bigger. We're also using on our own
      # runners on GCE. So uploading to GitHub actions artifact storage hosted
      # on Azure is dirt slow. We drop static libraries and object files, which
      # aren't needed for testing. Then we do some minimal compression locally
      # *in parallel* and upload to GCS. This can be further optimized.
      # Especially decompression is still pretty slow. See #9881.
      - name: "Creating build dir archive"
        id: archive
        env:
          BUILD_DIR_ARCHIVE: ${{ env.BUILD_DIR }}.tar.zst
        run: |
          tar --exclude '*.a' --exclude '*.o' \
            -I 'zstd -T0' \
            -cf ${BUILD_DIR_ARCHIVE} ${BUILD_DIR}
          echo "::set-output name=build-dir-archive::${BUILD_DIR_ARCHIVE}"
      - name: "Uploading build dir archive"
        id: upload
        env:
          GCS_ARTIFACT: ${{ env.BUCKET }}/${{ github.sha }}/${{ steps.archive.outputs.build-dir-archive }}
          BUILD_DIR_ARCHIVE: ${{ steps.archive.outputs.build-dir-archive }}
        run: |
          gcloud alpha storage cp "${BUILD_DIR_ARCHIVE}" "${GCS_ARTIFACT}"
          echo "::set-output name=gcs-artifact::${GCS_ARTIFACT}"

  host_tools_assertions:
    uses: ./.github/workflows/host_tools.yml
    with:
      host-binary-root: host-tools-assertions
      enable-assertions: "ON"

  build_tf_integrations:
    runs-on:
      # Hacks, and order matters. See the comment at the top of the file.
      - self-hosted
      - runner-group=${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}
      - cpu
      - os-family=Linux
    outputs:
      binaries-dir: ${{ steps.build.outputs.binaries-dir }}
      binaries-archive: ${{ steps.archive.outputs.binaries-archive }}
      gcs-artifact: ${{ steps.upload.outputs.gcs-artifact }}
    steps:
      - name: "Checking out repository"
        uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2
        with:
          submodules: true
      - name: "Building TF binaries"
        id: build
        env:
          IREE_TF_BINARIES_OUTPUT_DIR: iree-tf-binaries
        run: |
          ./build_tools/github_actions/docker_run.sh \
            --env "IREE_TF_BINARIES_OUTPUT_DIR=$(realpath "${IREE_TF_BINARIES_OUTPUT_DIR}")" \
            gcr.io/iree-oss/frontends-swiftshader@sha256:3090418a8d8a64c356d35eff285af32570a72f41127aa123209c1562f57abb01 \
            build_tools/cmake/build_tf_binaries.sh
          echo "::set-output name=binaries-dir::${IREE_TF_BINARIES_OUTPUT_DIR}"
      - name: "Creating archive of binaries"
        id: archive
        env:
          BINARIES_ARCHIVE: tf-binaries.tar
          BINARIES_DIR: ${{ steps.build.outputs.binaries-dir }}
        run: |
          tar -cf "${BINARIES_ARCHIVE}" "${BINARIES_DIR}"
          echo "::set-output name=binaries-archive::${BINARIES_ARCHIVE}"
      - name: "Uploading binaries archive"
        id: upload
        env:
          GCS_ARTIFACT: ${{ env.BUCKET }}/${{ github.sha }}/${{ steps.archive.outputs.binaries-archive }}
          BINARIES_ARCHIVE: ${{ steps.archive.outputs.binaries-archive }}
        run: |
          gcloud alpha storage cp "${BINARIES_ARCHIVE}" "${GCS_ARTIFACT}"
          echo "::set-output name=gcs-artifact::${GCS_ARTIFACT}"

  test_all:
    needs: build_all
    runs-on:
      # Hacks, and order matters. See the comment at the top of the file.
      - self-hosted
      - runner-group=${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}
      - cpu
      - os-family=Linux
    env:
      BUILD_DIR: ${{ needs.build_all.outputs.build-dir }}
      BUILD_DIR_ARCHIVE: ${{ needs.build_all.outputs.build-dir-archive }}
      GCS_ARTIFACT: ${{ needs.build_all.outputs.gcs-artifact }}
    steps:
      - name: "Checking out repository"
        uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2
        with:
          submodules: true
      - name: "Downloading build dir archive"
        run: gcloud alpha storage cp "${GCS_ARTIFACT}" "${BUILD_DIR_ARCHIVE}"
      - name: "Extracting archive"
        run: tar -xf "${BUILD_DIR_ARCHIVE}"
      - name: "Testing all"
        run: |
          ./build_tools/github_actions/docker_run.sh \
            --env IREE_CUDA_DISABLE=1 \
            gcr.io/iree-oss/swiftshader@sha256:5027d56cdfee743d956bffd035668f7784166a486c48c74b42e5882cb0c289bf \
            ./build_tools/cmake/ctest_all.sh \
            "${BUILD_DIR}"

  test_gpu:
    if: github.event_name != 'pull_request'
    needs: build_all
    runs-on:
      # Hacks, and order matters. See the comment at the top of the file.
      - self-hosted
      - runner-group=${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}
      - gpu
      - os-family=Linux
    env:
      BUILD_DIR: ${{ needs.build_all.outputs.build-dir }}
      BUILD_DIR_ARCHIVE: ${{ needs.build_all.outputs.build-dir-archive }}
      GCS_ARTIFACT: ${{ needs.build_all.outputs.gcs-artifact }}
    steps:
      - name: "Checking out repository"
        uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2
        with:
          submodules: true
      - name: Querying GPU information
        run: |
          ./build_tools/scripts/check_cuda.sh
          ./build_tools/scripts/check_vulkan.sh
      - name: "Downloading build dir archive"
        run: gcloud alpha storage cp "${GCS_ARTIFACT}" "${BUILD_DIR_ARCHIVE}"
      - name: "Extracting archive"
        run: tar -xf "${BUILD_DIR_ARCHIVE}"
      - name: "Testing with GPU"
        run: |
          ./build_tools/github_actions/docker_run.sh \
            --env IREE_VULKAN_F16_DISABLE=0 \
            --env IREE_CUDA_DISABLE=0 \
            --env CTEST_PARALLEL_LEVEL=2 \
            --gpus all \
            --env NVIDIA_DRIVER_CAPABILITIES=all \
            gcr.io/iree-oss/nvidia@sha256:7c2f56db65e656c15e6c96b5812a8275dd53c82bf41221192f9ba8a451aad870 \
            bash -c \
            "./build_tools/scripts/check_cuda.sh && ./build_tools/scripts/check_vulkan.sh && ./build_tools/cmake/ctest_all.sh ${BUILD_DIR}"

  test_tf_integrations:
    needs: [build_tf_integrations, build_all]
    runs-on:
      # Hacks, and order matters. See the comment at the top of the file.
      - self-hosted
      - runner-group=${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}
      - cpu
      - os-family=Linux
    env:
      BUILD_DIR: ${{ needs.build_all.outputs.build-dir }}
      BUILD_DIR_ARCHIVE: ${{ needs.build_all.outputs.build-dir-archive }}
      BUILD_DIR_GCS_ARTIFACT: ${{ needs.build_all.outputs.gcs-artifact }}
      TF_BINARIES_DIR: ${{ needs.build_tf_integrations.outputs.binaries-dir }}
      TF_BINARIES_ARCHIVE: ${{ needs.build_tf_integrations.outputs.binaries-archive }}
      TF_BINARIES_GCS_ARTIFACT: ${{ needs.build_tf_integrations.outputs.gcs-artifact }}
    steps:
      - name: "Checking out repository"
        uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2
        with:
          submodules: true
      - name: "Downloading TF binaries archive"
        run: gcloud alpha storage cp "${TF_BINARIES_GCS_ARTIFACT}" "${TF_BINARIES_ARCHIVE}"
      - name: "Extracting TF binaries archive"
        run: tar -xf "${TF_BINARIES_ARCHIVE}"
      - name: "Symlinking TF binaries"
        run: |
          ./integrations/tensorflow/symlink_binaries.sh "$(realpath "${TF_BINARIES_DIR}")"
      - name: "Downloading build dir archive"
        run: gcloud alpha storage cp "${BUILD_DIR_GCS_ARTIFACT}" "${BUILD_DIR_ARCHIVE}"
      - name: "Extracting build dir archive"
        run: tar -xf "${BUILD_DIR_ARCHIVE}"
      - name: "Running TF integrations tests"
        run: |
          ./build_tools/github_actions/docker_run.sh \
            gcr.io/iree-oss/frontends-swiftshader@sha256:3090418a8d8a64c356d35eff285af32570a72f41127aa123209c1562f57abb01 \
            build_tools/cmake/run_tf_tests.sh \
            "${BUILD_DIR}"

  asan:
    runs-on:
      # Hacks, and order matters. See the comment at the top of the file.
      - self-hosted
      - runner-group=${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}
      - cpu
      - os-family=Linux
    steps:
      - name: "Checking out repository"
        uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2
        with:
          submodules: true
      - name: "Building and testing with AddressSanitizer"
        run: |
          ./build_tools/github_actions/docker_run.sh \
            gcr.io/iree-oss/swiftshader@sha256:5027d56cdfee743d956bffd035668f7784166a486c48c74b42e5882cb0c289bf \
            ./build_tools/cmake/build_and_test_asan.sh

  tsan:
    runs-on:
      # Hacks, and order matters. See the comment at the top of the file.
      - self-hosted
      - runner-group=${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}
      - cpu
      - os-family=Linux
    steps:
      - name: "Checking out repository"
        uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2
        with:
          submodules: true
      - name: "Building and testing with ThreadSanitizer"
        run: |
          ./build_tools/github_actions/docker_run.sh \
            gcr.io/iree-oss/base@sha256:5d43683c6b50aebe1fca6c85f2012f3b0fa153bf4dd268e8767b619b1891423a \
            ./build_tools/cmake/build_and_test_tsan.sh

  riscv32:
    needs: host_tools_assertions
    runs-on:
      # Hacks, and order matters. See the comment at the top of the file.
      - self-hosted
      - runner-group=${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}
      - cpu
      - os-family=Linux
    env:
      BUILD_RISCV_DIR: "build-riscv-rv32-baremetal"
      RISCV_CONFIG: "rv32-baremetal"
      HOST_BINARY_ROOT: ${{ needs.host_tools_assertions.outputs.host-binary-root }}
      HOST_BINARY_ARCHIVE: ${{ needs.host_tools_assertions.outputs.host-binary-root }}.tar
    steps:
      - name: "Checking out repository"
        uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2
        with:
          submodules: true
      - name: "Downloading host tools"
        uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 # v3.0.0
        with:
          name: "${{ env.HOST_BINARY_ARCHIVE }}"
      - name: "Extracting host tools archive"
        run: |
          tar -xvf ${HOST_BINARY_ARCHIVE}
      - name: "Cross-compiling and testing riscv32"
        run: |
          ./build_tools/github_actions/docker_run.sh \
            --env "RISCV_CONFIG=${RISCV_CONFIG}" \
            --env "BUILD_RISCV_DIR=${BUILD_RISCV_DIR}" \
            --env "IREE_HOST_BINARY_ROOT=${HOST_BINARY_ROOT}" \
            gcr.io/iree-oss/riscv@sha256:720bc0215d8462ea14352edc22710a6ce4c0c1daff581d179dd173885f1d8a35 \
            bash -c \
            "./build_tools/cmake/build_riscv.sh && tests/riscv32/smoke.sh"

  riscv64:
    needs: [build_all, host_tools_assertions, build_tf_integrations]
    runs-on:
      # Hacks, and order matters. See the comment at the top of the file.
      - self-hosted
      - runner-group=${{ github.event_name == 'pull_request' && 'presubmit' || 'postsubmit' }}
      - cpu
      - os-family=Linux
    env:
      BUILD_RISCV_DIR: "build-riscv-r64"
      RISCV_CONFIG: "rv64"
      HOST_BINARY_ROOT: ${{ needs.host_tools_assertions.outputs.host-binary-root }}
      HOST_BINARY_ARCHIVE: ${{ needs.host_tools_assertions.outputs.host-binary-root }}.tar
      BUILD_DIR: ${{ needs.build_all.outputs.build-dir }}
      BUILD_DIR_ARCHIVE: ${{ needs.build_all.outputs.build-dir-archive }}
      BUILD_DIR_GCS_ARTIFACT: ${{ needs.build_all.outputs.gcs-artifact }}
      TF_BINARIES_DIR: ${{ needs.build_tf_integrations.outputs.binaries-dir }}
      TF_BINARIES_ARCHIVE: ${{ needs.build_tf_integrations.outputs.binaries-archive }}
      TF_BINARIES_GCS_ARTIFACT: ${{ needs.build_tf_integrations.outputs.gcs-artifact }}
    steps:
      - name: "Checking out repository"
        uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e # v2
        with:
          submodules: true
      - name: "Downloading host tools"
        uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 # v3.0.0
        with:
          name: "${{ env.HOST_BINARY_ARCHIVE }}"
      - name: "Extracting host tools archive"
        run: |
          tar -xvf ${HOST_BINARY_ARCHIVE}
      - name: "Downloading TF binaries archive"
        run: gcloud alpha storage cp "${TF_BINARIES_GCS_ARTIFACT}" "${TF_BINARIES_ARCHIVE}"
      - name: "Extracting TF binaries archive"
        run: tar -xf "${TF_BINARIES_ARCHIVE}"
        # FIXME: The riscv64 tests currently need the entire build dir archive
        # just to get FileCheck from LLVM's bin directory. This is silly and we
        # should make FileCheck available another way.
      - name: "Downloading build dir archive"
        run: gcloud alpha storage cp "${BUILD_DIR_GCS_ARTIFACT}" "${BUILD_DIR_ARCHIVE}"
      - name: "Extracting archive"
        run: tar -xf "${BUILD_DIR_ARCHIVE}"
      - name: "Cross-compiling and testing riscv64"
        run: |
          ./build_tools/github_actions/docker_run.sh \
            --env "RISCV_CONFIG=${RISCV_CONFIG}" \
            --env "BUILD_RISCV_DIR=${BUILD_RISCV_DIR}" \
            --env "IREE_HOST_BINARY_ROOT=${HOST_BINARY_ROOT}" \
            --env "IREE_IMPORT_TFLITE_BIN=${TF_BINARIES_DIR}/iree-import-tflite" \
            --env "LLVM_BIN_DIR=${BUILD_DIR}/third_party/llvm-project/llvm/bin" \
            gcr.io/iree-oss/riscv@sha256:720bc0215d8462ea14352edc22710a6ce4c0c1daff581d179dd173885f1d8a35 \
            bash -c \
              "./build_tools/cmake/build_riscv.sh && ./tests/riscv64/smoke.sh"


  summary:
    runs-on: ubuntu-20.04
    needs:
      - build_runtime
      - test_runtime
      - build_all
      - test_all
      - test_gpu
      - host_tools_assertions
      - asan
      - tsan
      - riscv32
      - riscv64
    if: always()
    steps:
      - name: Getting combined job status
        run: |
          echo '${{ toJson(needs.*.result) }}' \
            | jq --exit-status 'all(.=="success" or .=="skipped")' > /dev/null
