# 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 release artifacts

on:
    workflow_dispatch:
        inputs:
            releaseTag:
                description: Release Tag
                required: true

env:
    CHIP_NO_LOG_TIMESTAMPS: true
    # XXX: Workaround for https://github.com/actions/cache/issues/1141
    SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3

jobs:
    esp32:
        name: ESP32
        env:
            BUILD_DIRECTORY: examples/all-clusters-app/esp32/build
        runs-on: ubuntu-latest

        container:
            image: connectedhomeip/chip-build-esp32:0.7.3

        steps:
            - uses: Wandalen/wretry.action@v1.0.36
              name: Checkout
              with:
                  action: actions/checkout@v3
                  with: |
                      submodules: true
                      token: ${{ github.token }}
                  attempt_limit: 3
                  attempt_delay: 2000
                  ref: "${{ github.event.inputs.releaseTag }}"

            - name: Bootstrap cache
              uses: actions/cache@v3
              timeout-minutes: 10
              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
              run: scripts/examples/esp_example.sh all-clusters-app

            - name: Upload artifact
              run: |
                  scripts/helpers/upload_release_asset.py                  \
                     --github-repository project-chip/connectedhomeip      \
                     --github-api-token "${{ secrets.GITHUB_TOKEN }}"      \
                     --release-tag "${{ github.event.inputs.releaseTag }}" \
                     --bundle-files $BUILD_DIRECTORY/chip-all-clusters-app.flashbundle.txt \
                     --working-directory $BUILD_DIRECTORY                  \
                     --bundle-name esp32-chip-all-clusters-app

    efr32:
        name: EFR32
        env:
            SILABS_BOARD: BRD4161A
            BUILD_DIRECTORY: out/lock_app_debug/BRD4161A

        runs-on: ubuntu-latest

        container:
            image: connectedhomeip/chip-build-efr32:0.7.3
        steps:
            - uses: Wandalen/wretry.action@v1.0.36
              name: Checkout
              with:
                  action: actions/checkout@v3
                  with: |
                      submodules: true
                      token: ${{ github.token }}
                  attempt_limit: 3
                  attempt_delay: 2000
                  ref: "${{ github.event.inputs.releaseTag }}"

            - name: Bootstrap cache
              uses: actions/cache@v3
              timeout-minutes: 10
              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 EFR32 Lock App
              run: scripts/examples/gn_efr32_example.sh examples/lock-app/efr32/
                  out/lock_app_debug $SILABS_BOARD

            - name: Upload artifact
              run: |
                  scripts/helpers/upload_release_asset.py                     \
                     --github-repository project-chip/connectedhomeip         \
                     --github-api-token "${{ secrets.GITHUB_TOKEN }}"         \
                     --release-tag "${{ github.event.inputs.releaseTag }}"    \
                     --bundle-files $BUILD_DIRECTORY/lock_app.flashbundle.txt \
                     --working-directory $BUILD_DIRECTORY                     \
                     --bundle-name efr32-$SILABS_BOARD-chip-lock-example
