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