# 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

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

        container:
            image: ghcr.io/project-chip/chip-build-esp32:47

        steps:
            - name: Checkout
              uses: actions/checkout@v4
              with:
                  ref: "${{ github.event.inputs.releaseTag }}"
            - name: Bootstrap
              uses: ./.github/actions/bootstrap

            - 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: ghcr.io/project-chip/chip-build-efr32:49
        steps:
            - name: Checkout
              uses: actions/checkout@v4
              with:
                  ref: "${{ github.event.inputs.releaseTag }}"
            - name: Bootstrap
              uses: ./.github/actions/bootstrap

            - name: Build example EFR32 Lock App
              run:
                  scripts/examples/gn_silabs_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
