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

name: Bazel Build

on:
  push:
    branches:
      - master

jobs:
  linux:
    runs-on: ubuntu-18.04
    env:
      CXX: clang++
      CC: clang
      PYTHON_BIN: /usr/bin/python3
      # Install the version of Bazel that is required by our .bazelversion file.
      BAZEL_VERSION: 2.1.0
    steps:
      - name: Installing bazel
        run: |
          # https://docs.bazel.build/versions/master/install-ubuntu.html
          sudo apt-get install unzip zip
          wget https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION?}/bazel-${BAZEL_VERSION?}-installer-linux-x86_64.sh
          chmod +x bazel-${BAZEL_VERSION?}-installer-linux-x86_64.sh
          ./bazel-${BAZEL_VERSION?}-installer-linux-x86_64.sh --user
          rm bazel-${BAZEL_VERSION?}-installer-linux-x86_64.sh
          echo "::add-path::${HOME?}/bin"
      - name: Installing dependencies
        run: |
          sudo apt-get update
          sudo apt-get install clang libsdl2-dev python3 python3-pip python3-setuptools
          # Update pip before using it so it picks up the latest versions of our dependencies.
          sudo python3 -m pip install --upgrade pip
          sudo python3 -m pip install jax jaxlib numpy tf-nightly
          sudo python3 -m pip install --upgrade  jax jaxlib
      - 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 not explicitly marked as excluded from CI
          # (using the tag "noga"="No GitHub Actions").
          # 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 '//... except attr("tags", "noga", //...)' | xargs bazel test --test_env=IREE_VULKAN_DISABLE=1 --test_env=IREE_DEFAULT_BACKENDS="tf,iree_vmla" --define=iree_tensorflow=true --test_output=errors --keep_going
