# 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

jobs:
    android:
        name: Run
        timeout-minutes: 75

        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.5.56
            volumes:
                - "/tmp/log_output:/tmp/test_logs"

        steps:
            - uses: Wandalen/wretry.action@v1.0.11
              name: Checkout
              with:
                  action: actions/checkout@v3
                  with: |
                      submodules: true
                      token: ${{ github.token }}
                  attempt_limit: 3
                  attempt_delay: 2000
            - name: Bootstrap
              timeout-minutes: 10
              run: scripts/build/gn_bootstrap.sh
            - name: Uploading bootstrap logs
              uses: actions/upload-artifact@v2
              if: ${{ always() }} && ${{ !env.ACT }}
              with:
                  name: bootstrap-logs
                  path: |
                      .environment/gn_out/.ninja_log
                      .environment/pigweed-venv/*.log
            - name: Build Android CHIPTool and CHIPTest (ARM)
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --no-log-timestamps --target-glob 'android-arm-chip-*' build"
            - name: Clean out build output
              run: rm -rf ./out
            - name: Build Android CHIPTool and CHIPTest (ARM64)
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --no-log-timestamps --target-glob 'android-arm64-chip-*' 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.tests"
            - 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 --no-log-timestamps --target-glob 'android-androidstudio-arm64-chip-tool' build"
