# Copyright (c) 2020 Project CHIP Authors
#
# 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
#
# http://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: Full builds - Android

on:
    push:
    workflow_dispatch:

concurrency:
    group: full-${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
    cancel-in-progress: true

env:
    CHIP_NO_LOG_TIMESTAMPS: true
    # XXX: Workaround for https://github.com/actions/cache/issues/1141
    SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3

jobs:
    full_android:
        name: Run
        timeout-minutes: 120

        env:
            JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64/

        runs-on: ubuntu-latest
        if: github.actor != 'restyled-io[bot]'

        container:
            image: connectedhomeip/chip-build-android:0.7.3
            volumes:
                - "/tmp/log_output:/tmp/test_logs"

        steps:
            - uses: Wandalen/wretry.action@v1.0.36
              if: ${{ !env.ACT }}
              name: Checkout
              with:
                  action: actions/checkout@v3.5.2
                  with: |
                      token: ${{ github.token }}
                  attempt_limit: 3
                  attempt_delay: 2000
            # To use act like:
            #   act -j full_android
            #
            # Note you likely still need to have non submodules setup for the
            # local machine, like:
            #   git submodule deinit --all
            - uses: actions/checkout@v3.5.2
              if: ${{ env.ACT }}
              name: Checkout (ACT for local build)
            - name: Checkout submodules
              run: scripts/checkout_submodules.py --allow-changing-global-git-config --shallow --platform android

            - name: Bootstrap cache
              uses: actions/cache@v3
              timeout-minutes: 10
              with:
                  key: ${{ runner.os }}-env-${{ hashFiles('scripts/setup/*', 'third_party/pigweed/**') }}
                  path: |
                      .environment
                      build_overrides/pigweed_environment.gni
            - name: Bootstrap
              timeout-minutes: 10
              run: bash scripts/bootstrap.sh
            - name: Uploading bootstrap logs
              uses: actions/upload-artifact@v3
              if: ${{ always() && !env.ACT }}
              with:
                  name: bootstrap-logs
                  path: |
                      .environment/gn_out/.ninja_log
                      .environment/pigweed-venv/*.log

            - name: Build Android arm-chip-tool
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target android-arm-chip-tool build"
            - name: Clean out build output
              run: rm -rf ./out
            - name: Build Android arm-tv-casting-app
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target android-arm-tv-casting-app build"
            - name: Clean out build output
              run: rm -rf ./out
            - name: Build Android arm-tv-server
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target android-arm-tv-server build"
            - name: Clean out build output
              run: rm -rf ./out
            - name: Build Android arm64-tv-casting-app
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target android-arm64-tv-casting-app build"
            - name: Clean out build output
              run: rm -rf ./out
            - name: Build Android arm64-tv-server
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target android-arm64-tv-server build"
            - name: Clean out build output
              run: rm -rf ./out                    
            - name: Build Android arm64-chip-tool
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target android-arm64-chip-tool build"
            - name: Run Android build rule tests
              run: |
                  ./scripts/run_in_build_env.sh \
                    "ninja -C out/android-arm64-chip-tool build/chip/java/tests:java_build_test"
            - name: Clean out build output
              run: rm -rf ./out
            # - name: Build Android Studio build (arm64 only)
            #   run: |
            #     ./scripts/run_in_build_env.sh \
            #       "./scripts/build/build_examples.py --target android-androidstudio-arm64-chip-tool  build"
