# 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: QEMU

on:
    push:
    pull_request:
    merge_group:

concurrency:
    group: ${{ 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:

    qemu-esp32:
        name: ESP32
        timeout-minutes: 85

        env:
            BUILD_TYPE: esp32-qemu

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

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

        steps:
            - uses: Wandalen/wretry.action@v1.3.0
              name: Checkout
              with:
                  action: actions/checkout@v3.5.2
                  with: |
                      token: ${{ github.token }}
                  attempt_limit: 3
                  attempt_delay: 2000
            - name: Checkout submodules
              run: scripts/checkout_submodules.py --allow-changing-global-git-config --shallow --platform esp32

            - uses: Wandalen/wretry.action@v1.3.0
              name: Bootstrap cache
              continue-on-error: true
              timeout-minutes: 10
              with:
                action: buildjet/cache@v3
                attempt_limit: 3
                attempt_delay: 2000
                with: |
                    key: ${{ runner.os }}-env-${{ hashFiles('scripts/setup/*', 'third_party/pigweed/**') }}
                    path: |
                        .environment
                        build_overrides/pigweed_environment.gni
            - name: Bootstrap
              timeout-minutes: 25
              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 ESP32 QEMU test images
              timeout-minutes: 20
              run: |
                  scripts/run_in_build_env.sh "         \
                      ./scripts/build/build_examples.py \
                      --target esp32-qemu-tests         \
                      build                             \
                  "
            - name: Run all tests
              timeout-minutes: 40
              run: |
                  src/test_driver/esp32/run_qemu_image.py \
                    --verbose                             \
                    --file-image-list ./out/esp32-qemu-tests/test_images.txt
            - name: Uploading Logs
              uses: actions/upload-artifact@v3
              if: ${{ !env.ACT }}
              with:
                  name: qemu-esp32-logs
                  path: /tmp/log_output

    qemu-tizen:
        name: Tizen

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

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

        steps:
            - uses: Wandalen/wretry.action@v1.3.0
              name: Checkout
              with:
                  action: actions/checkout@v3.5.2
                  with: |
                      token: ${{ github.token }}
                  attempt_limit: 3
                  attempt_delay: 2000
            - name: Checkout submodules
              run: scripts/checkout_submodules.py --allow-changing-global-git-config --shallow --platform tizen

            - uses: Wandalen/wretry.action@v1.3.0
              name: Bootstrap cache
              continue-on-error: true
              timeout-minutes: 10
              with:
                action: buildjet/cache@v3
                attempt_limit: 3
                attempt_delay: 2000
                with: |
                    key: ${{ runner.os }}-env-${{ hashFiles('scripts/setup/*', 'third_party/pigweed/**') }}
                    path: |
                        .environment
                        build_overrides/pigweed_environment.gni
            - name: Bootstrap
              timeout-minutes: 25
              run: bash scripts/bootstrap.sh

            - name: Build and run tests
              run: |
                ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py \
                        --target tizen-arm-tests-no-ble-no-thread \
                        build
                    "
