# 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 - Linux Standalone

on:
    push:
    pull_request:

jobs:
    linux-standalone:
        name: Linux Standalone

        env:
            BUILD_TYPE: gn_linux
            BUILD_VERSION: 0.2.14
            BUILD_IMAGE: chip-build
            BUILD_ORG: connectedhomeip

        runs-on: ubuntu-latest

        container:
            image: connectedhomeip/chip-build:0.4.18
            volumes:
                - "/tmp/bloat_reports:/tmp/bloat_reports"
                - "/tmp/output_binaries:/tmp/output_binaries"

        steps:
            - name: Checkout
              uses: actions/checkout@v2
              # Fetch depth 0 to get all history and be able to check mergepoint for bloat report
              with:
                  fetch-depth: 0
                  submodules: true
            - name: Initialize CodeQL
              uses: github/codeql-action/init@v1
              with:
                  languages: "cpp, python"
                  queries: +security-and-quality
            - name: Bootstrap
              run: scripts/build/gn_bootstrap.sh
            - name: Build example Standalone Echo Client
              run:
                  scripts/examples/gn_build_example.sh examples/chip-tool
                  out/chip_tool_debug
            - name: Build example Standalone Shell
              run:
                  scripts/examples/gn_build_example.sh examples/shell/standalone
                  out/shell_debug
            - name: Build example Standalone All Clusters Server 
              run:
                  scripts/examples/gn_build_example.sh examples/all-clusters-app/linux
                  out/all_clusters_debug chip_bypass_rendezvous=true
            - name: Binary artifact suffix
              id: outsuffix
              uses: haya14busa/action-cond@v1.0.0
              with:
                  cond: ${{ github.event.pull_request.number == '' }}
                  if_true: "${{ github.sha }}"
                  if_false: "pull-${{ github.event.pull_request.number }}"
            - name: Uploading Binaries
              uses: actions/upload-artifact@v2
              with:
                  name:
                      ${{ env.BUILD_TYPE }}-example-build-${{
                      steps.outsuffix.outputs.value }}
                  path: |
                      out/chip_tool_debug/chip-tool
                      out/shell_debug/chip-shell
            - name: Remove third_party binaries for CodeQL Analysis
              run: find out -type d -name "third_party" -exec rm -rf {} +
            - name: Remove dbus binaries for CodeQL Analysis
              run: find out -type d -name "dbus" -exec rm -rf {} +
            - name: Remove gen binaries for CodeQL Analysis
              run: find out -type d -name "gen" -exec rm -rf {} +
            - name: Perform CodeQL Analysis
              if: ${{ github.event_name == 'push' }}
              uses: github/codeql-action/analyze@v1
