# 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
    
jobs:
    full_android:
        name: Run

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

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

        container:
            image: ghcr.io/project-chip/chip-build-android:20
            volumes:
                - "/tmp/log_output:/tmp/test_logs"

        steps:
            - uses: actions/checkout@v4
              name: Checkout
              with:
                token: ${{ github.token }}
              # 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@v4
              if: ${{ env.ACT }}
              name: Checkout (ACT for local build)
            - name: Checkout submodules & Bootstrap
              uses: ./.github/actions/checkout-submodules-and-bootstrap
              with:
                platform: android

            - name: Cleanup pigweed CIPD packages
              # This should not generally be needed, however android CI runs out of space
              # We do not need pigweed cross compile here because we use android NDK
              # compilers. Removing this package saves a significant amount of space.
              run: |
                du -sh .environment/cipd/packages/arm
                rm -rf .environment/cipd/packages/arm
            - 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 examples/android/CHIPTool/app/libs/jniLibs/* examples/android/CHIPTool/app/libs/*.jar
            - 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 examples/tv-casting-app/android/App/app/libs/jniLibs/* examples/tv-casting-app/android/App/app/libs/*.jar
            - 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 examples/tv-app/android/App/app/libs/jniLibs/* examples/tv-app/android/App/app/libs/*.jar
            - 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 examples/tv-casting-app/android/app/libs/jniLibs/* examples/android/CHIPTool/app/libs/*.jar
            - 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 examples/tv-app/android/App/app/libs/jniLibs/* examples/tv-app/android/App/app/libs/*.jar
            - 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 examples/android/CHIPTool/app/libs/jniLibs/* examples/android/CHIPTool/app/libs/*.jar
            # - 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"
