# 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 - BouffaloLab

on:
  push:
  pull_request:
  merge_group:
  workflow_dispatch:

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:
  bouffalolab:
    name: Bouffalo Lab
    timeout-minutes: 90

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

    container:
      image: connectedhomeip/chip-build-bouffalolab:0.7.3
      volumes:
        - "/tmp/bloat_reports:/tmp/bloat_reports"
    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 bouffalolab --recursive

      - 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}"

      - uses: Wandalen/wretry.action@v1.3.0
        name: Bootstrap cache
        continue-on-error: true
        timeout-minutes: 20
        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 example BL602 Lighting App
        timeout-minutes: 30
        run: |
          ./scripts/run_in_build_env.sh \
            "./scripts/build/build_examples.py \
              --target bouffalolab-bl602-iot-matter-v1-light \
              --target bouffalolab-bl602-iot-matter-v1-light-115200-rpc \
              build \
              --copy-artifacts-to out/artifacts \
            "
      - name: Prepare some bloat report from the previous builds
        run: |
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
              bl602 bl602 lighting-app \
              out/artifacts/bouffalolab-bl602-iot-matter-v1-light/chip-bl602-lighting-example.out \
              /tmp/bloat_reports/
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
              bl602 bl602+rpc lighting-app \
              out/artifacts/bouffalolab-bl602-iot-matter-v1-light-115200-rpc/chip-bl602-lighting-example.out \
              /tmp/bloat_reports/
      - name: Clean out build output
        run: rm -rf ./out

      - name: Build example BL702 Lighting App
        timeout-minutes: 30
        run: |
          ./scripts/run_in_build_env.sh \
            "./scripts/build/build_examples.py \
              --target bouffalolab-xt-zb6-devkit-light \
              --target bouffalolab-xt-zb6-devkit-light-115200-rpc \
              build \
              --copy-artifacts-to out/artifacts \
            "
      - name: Prepare some bloat report from the previous builds
        run: |
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
              bl702 bl702 lighting-app \
              out/artifacts/bouffalolab-xt-zb6-devkit-light/chip-bl702-lighting-example.out \
              /tmp/bloat_reports/
          .environment/pigweed-venv/bin/python3 scripts/tools/memory/gh_sizes.py \
              bl702 bl702+rpc lighting-app \
              out/artifacts/bouffalolab-xt-zb6-devkit-light-115200-rpc/chip-bl702-lighting-example.out \
              /tmp/bloat_reports/
      - name: Clean out build output
        run: rm -rf ./out

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