# 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: Build example - ESP32

on:
    push:
    pull_request:

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

jobs:
    esp32:
        name: ESP32
        timeout-minutes: 120

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

        container:
            image: connectedhomeip/chip-build-esp32:0.6.06
            volumes:
                - "/tmp/bloat_reports:/tmp/bloat_reports"

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

            - name: Set up environment for size reports
              if: ${{ !env.ACT }}
              env:
                  GH_CONTEXT: ${{ toJson(github) }}
              run: scripts/tools/memory/gh_sizes_environment.py "${GH_CONTEXT}"

            - name: Bootstrap
              timeout-minutes: 10
              run: scripts/build/gn_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 some M5Stack variations
              timeout-minutes: 60
              run: |
                  ./scripts/run_in_build_env.sh \
                     "./scripts/build/build_examples.py \
                        --enable-flashbundle \
                        --target esp32-m5stack-all-clusters \
                        --target esp32-m5stack-all-clusters-minimal \
                        --target esp32-m5stack-all-clusters-rpc-ipv6only \
                        build \
                        --copy-artifacts-to out/artifacts \
                     "
            - name: Prepare bloat report
              run: |
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                     esp32 m5stack all-clusters-app \
                     out/esp32-m5stack-all-clusters/chip-all-clusters-app.elf \
                     /tmp/bloat_reports/
            - name: Build example All Clusters App C3
              timeout-minutes: 15
              run: scripts/examples/esp_example.sh all-clusters-app sdkconfig_c3devkit.defaults
            - name: Copy aside build products
              run: |
                  mkdir -p example_binaries/esp32-build
                  cp examples/all-clusters-app/esp32/build/chip-all-clusters-app.elf \
                     example_binaries/esp32-build/chip-all-clusters-app.elf
                  .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
                     esp32 c3devkit all-clusters-app \
                     example_binaries/esp32-build/chip-all-clusters-app.elf \
                     /tmp/bloat_reports/
            - name: Build example Pigweed App
              timeout-minutes: 15
              run: scripts/examples/esp_example.sh pigweed-app sdkconfig.defaults
            - name: Build example Lighting App
              timeout-minutes: 15
              run: scripts/examples/esp_example.sh lighting-app sdkconfig.defaults
            - name: Build example Lock App
              timeout-minutes: 15
              run: scripts/examples/esp_example.sh lock-app sdkconfig.defaults

            - name: Uploading Size Reports
              uses: actions/upload-artifact@v3
              if: ${{ !env.ACT }}
              with:
                  name: Size,ESP32-Examples,${{ env.GH_EVENT_PR }},${{ env.GH_EVENT_HASH }},${{ env.GH_EVENT_PARENT }},${{ github.event_name }}
                  path: /tmp/bloat_reports/

    esp32_1:
        name: ESP32_1
        timeout-minutes: 90

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

        container:
            image: connectedhomeip/chip-build-esp32:0.6.06
            volumes:
                - "/tmp/bloat_reports:/tmp/bloat_reports"

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

            - name: Bootstrap
              timeout-minutes: 10
              run: scripts/build/gn_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 example Bridge App
              timeout-minutes: 15
              run: scripts/examples/esp_example.sh bridge-app

            - name: Build example Persistent Storage App
              timeout-minutes: 15
              run: scripts/examples/esp_example.sh persistent-storage sdkconfig.defaults

            - name: Build example Shell App
              timeout-minutes: 15
              run: scripts/examples/esp_example.sh shell sdkconfig.defaults

            - name: Build example Temperature Measurement App
              timeout-minutes: 15
              run: scripts/examples/esp_example.sh temperature-measurement-app sdkconfig.optimize.defaults

            - name: Build example OTA Requestor App
              run: scripts/examples/esp_example.sh ota-requestor-app sdkconfig.defaults
              timeout-minutes: 15

            - name: Build example OTA Provider App
              run: scripts/examples/esp_example.sh ota-provider-app sdkconfig.defaults
              timeout-minutes: 15
