# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Builds and tests iree core directory.

name: Bazel Build - Integrations

on:
  push:
    branches:
      - 'master'
      # Run on pushes to branches with a special name indicating they'd like
      # to run these actions.
      - 'test-ga-bazel*'

jobs:
  linux:
    runs-on: ubuntu-18.04
    container: gcr.io/iree-oss/bazel-tensorflow:prod
    steps:
      - name: Printing environment
        run: |
          "$CXX" --version
          "$CC" --version
          "$PYTHON_BIN" --version
      - name: Checking out repository
        uses: actions/checkout@v2
      - name: Initializing submodules
        run: ./scripts/git/submodule_versions.py init
      - name: Building and testing with bazel
        run: |
          # Build and test everything in the integrations/ directory not explicitly
          # marked as excluded from CI (using the tag
          # "noga"="No GitHub Actions") or which uses vulkan at runtime.
          # Note that somewhat contrary to its name `bazel test` will also build
          # any non-test targets specified.
          # We use `bazel query //...` piped to `bazel test` rather than the
          # simpler `bazel test //...` because the latter excludes targets
          # tagged "manual". The "manual" tag allows targets to be excluded from
          # human wildcard builds, but we want them built by CI unless they are
          # excluded with "noga".
          bazel query '//integrations/...' \
            | xargs bazel test \
              --config=generic_clang \
              --build_tag_filters="-noga" \
              --test_tag_filters="-noga,-driver=vulkan" \
              --test_env=IREE_VULKAN_DISABLE=1 \
              --test_env=IREE_AVAILABLE_BACKENDS="tf,iree_vmla" \
              --define=iree_tensorflow=true \
              --test_output=errors \
              --keep_going
