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

on:
    push:
    pull_request:
    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

jobs:
    cirque:
        name: Cirque
        timeout-minutes: 75

        env:
            DOCKER_RUN_VERSION: 0.5.56
            GITHUB_CACHE_PATH: /tmp/cirque-cache/

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

        # need to run with privilege, which isn't supported by job.XXX.contaner
        #  https://github.com/actions/container-action/issues/2
        #         container:
        #             image: connectedhomeip/chip-build-cirque:0.5.91
        #             volumes:
        #                 - "/tmp:/tmp"
        #                 - "/dev/pts:/dev/pts"
        #             env:
        #                 LOG_DIR: /tmp/cirque_test_output/
        #                 CLEANUP_DOCKER_FOR_CI: 1
        #             options: "--privileged"

        steps:
            - uses: Wandalen/wretry.action@v1.0.15
              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 linux

            - name: Get cirque cache key
              id: cirque-key
              run: |
                  echo "::set-output name=val::$(scripts/tests/cirque_tests.sh cachekeyhash)"

            - name: Cache
              uses: actions/cache@v2
              if: ${{ !env.ACT }}
              id: cache
              with:
                  path: ${{ env.GITHUB_CACHE_PATH }}
                  key: ${{ runner.os }}-cirque-${{ steps.cirque-key.outputs.val }}
                  restore-keys: |
                      ${{ runner.os }}-cirque-

            - name: Bootstrap
              timeout-minutes: 15
              run: |
                  integrations/docker/images/chip-build-cirque/run.sh \
                    --env GITHUB_ACTION_RUN=1 \
                    --env GITHUB_CACHE_PATH=${{ env.GITHUB_CACHE_PATH }} \
                    --volume /tmp:/tmp \
                    -- scripts/build/gn_bootstrap.sh

            - name: Cirque Bootstrap
              timeout-minutes: 15
              run: |
                  integrations/docker/images/chip-build-cirque/run.sh \
                    --env GITHUB_ACTION_RUN=1 \
                    --env GITHUB_CACHE_PATH=${{ env.GITHUB_CACHE_PATH }} \
                    --volume /tmp:/tmp \
                    -- scripts/tests/cirque_tests.sh bootstrap
            - name: Artifact suffix
              id: outsuffix
              uses: haya14busa/action-cond@v1.0.0
              if: ${{ !env.ACT }}
              with:
                  cond: ${{ github.event.pull_request.number == '' }}
                  if_true: "${{ github.sha }}"
                  if_false: "pull-${{ github.event.pull_request.number }}"
            - name: Build Binaries
              timeout-minutes: 30
              run: |
                  integrations/docker/images/chip-build-cirque/run.sh \
                    --env GITHUB_ACTION_RUN=1 \
                    --env GITHUB_CACHE_PATH=${{ env.GITHUB_CACHE_PATH }} \
                    --volume /tmp:/tmp \
                    -- ./gn_build.sh \
                    chip_build_tests=false \
                    chip_enable_wifi=false \
                    chip_im_force_fabric_quota_check=true \
                    enable_default_builds=false \
                    enable_host_gcc_build=true \
                    enable_standalone_chip_tool_build=true \
                    enable_linux_all_clusters_app_build=true \
                    enable_linux_lighting_app_build=true
            - name: Run Tests
              timeout-minutes: 25
              run: |
                  integrations/docker/images/chip-build-cirque/run.sh \
                     --env LOG_DIR=/tmp/cirque_test_output \
                     --env CLEANUP_DOCKER_FOR_CI=1 \
                     --env GITHUB_ACTION_RUN=1 \
                     --privileged \
                     --volume /tmp:/tmp \
                     --volume /dev/pts:/dev/pts \
                     -- scripts/tests/cirque_tests.sh run_all_tests
            - name: Uploading Binaries
              uses: actions/upload-artifact@v2
              if: ${{ always() && !env.ACT }}
              with:
                  name: cirque_log-${{steps.outsuffix.outputs.value}}-logs
                  path: /tmp/cirque_test_output/
