# 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 directories not covered by other workflows.

name: Bazel Build - Fallthrough

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
    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 iree/ 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 '//... -//iree/... -//bindings/... -//integrations/...' \
            | xargs bazel test \
              --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
