# Copyright (c) 2020-2021 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: Builds

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:
    build_linux_gcc_debug:
        name: Build on Linux (gcc_debug)
        timeout-minutes: 85

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

        container:
            image: connectedhomeip/chip-build:0.7.3
            volumes:
                - "/tmp/log_output:/tmp/test_logs"
            options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
                net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"

        steps:
            - name: Dump GitHub context
              env:
                  GITHUB_CONTEXT: ${{ toJSON(github) }}
              run: echo "$GITHUB_CONTEXT"
            - name: Dump Concurrency context
              env:
                  CONCURRENCY_CONTEXT: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
              run: echo "$CONCURRENCY_CONTEXT"
            - uses: Wandalen/wretry.action@v1.0.36
              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 --allow-changing-global-git-config --shallow --platform linux
            - name: Try to ensure the directories for core dumping exist and we
                  can write them.
              run: |
                  mkdir /tmp/cores || true
                  sysctl -w kernel.core_pattern=/tmp/cores/core.%u.%p.%t || true

            - 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: 10
              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: Setup Build
              run: scripts/build/gn_gen.sh --args="chip_config_memory_debug_checks=true chip_config_memory_debug_dmalloc=false"
            - name: Run Build
              timeout-minutes: 20
              run: scripts/run_in_build_env.sh "ninja -C ./out"
            - name: Run Tests
              timeout-minutes: 30
              run: scripts/tests/gn_tests.sh
            # TODO Log Upload https://github.com/project-chip/connectedhomeip/issues/2227
            # TODO https://github.com/project-chip/connectedhomeip/issues/1512
            # - name: Run Code Coverage
            #   if: ${{ contains('main', env.BUILD_TYPE) }}
            #   run: scripts/tools/codecoverage.sh
            # - name: Upload Code Coverage
            #   if: ${{ contains('main', env.BUILD_TYPE) }}
            #   run: bash <(curl -s https://codecov.io/bash)
            - name: Setup Build Without Detail Logging
              run: scripts/build/gn_gen.sh --args="chip_detail_logging=false"
            - name: Run Build Without Detail Logging
              timeout-minutes: 20
              run: scripts/run_in_build_env.sh "ninja -C ./out"
            - name: Setup Build Without Progress Logging
              run: scripts/build/gn_gen.sh --args="chip_detail_logging=false chip_progress_logging=false"
            - name: Run Build Without Progress Logging
              timeout-minutes: 20
              run: scripts/run_in_build_env.sh "ninja -C ./out"
            - name: Setup Build Without Error Logging
              run: scripts/build/gn_gen.sh --args="chip_detail_logging=false chip_progress_logging=false chip_error_logging=false"
            - name: Run Build Without Error Logging
              timeout-minutes: 20
              run: scripts/run_in_build_env.sh "ninja -C ./out"
            - name: Uploading core files
              uses: actions/upload-artifact@v3
              if: ${{ failure() && !env.ACT }}
              with:
                  name: crash-core-linux-gcc-debug
                  path: /tmp/cores/
                  # Cores are big; don't hold on to them too long.
                  retention-days: 5
            # OBJDIR on linux is > 10K files and takes more than 50 minutes to upload, usually
            # having the job timeout.
            #
            # If re-enabling, some subset of this should be picked
            #
            # - name: Uploading objdir for debugging
            #   uses: actions/upload-artifact@v3
            #   if: ${{ failure() && !env.ACT }}
            #   with:
            #       name: crash-objdir-linux-gcc-debug
            #       path: out/
            #       # objdirs are big; don't hold on to them too long.
            #       retention-days: 5

    build_linux:
        name: Build on Linux (fake, gcc_release, clang, simulated)
        timeout-minutes: 150

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

        container:
            image: connectedhomeip/chip-build:0.7.3
            volumes:
                - "/tmp/log_output:/tmp/test_logs"
            options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
                net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"

        steps:
            - name: Dump GitHub context
              env:
                  GITHUB_CONTEXT: ${{ toJSON(github) }}
              run: echo "$GITHUB_CONTEXT"
            - name: Dump Concurrency context
              env:
                  CONCURRENCY_CONTEXT: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
              run: echo "$CONCURRENCY_CONTEXT"
            - uses: Wandalen/wretry.action@v1.0.36
              name: Checkout
              with:
                  action: actions/checkout@v3
                  with: |
                      token: ${{ github.token }}
                  attempt_limit: 3
                  attempt_delay: 2000
            # - name: Initialize CodeQL
            #   if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/master' }}
            #   uses: github/codeql-action/init@v1
            #   with:
            #      languages: "cpp"
            - name: Checkout submodules
              run: scripts/checkout_submodules.py --allow-changing-global-git-config --shallow --platform linux
            - name: Try to ensure the directories for core dumping exist and we
                  can write them.
              run: |
                  mkdir /tmp/cores || true
                  sysctl -w kernel.core_pattern=/tmp/cores/core.%u.%p.%t || true

            - 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: 10
              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: Setup and Build Simulated Device
              timeout-minutes: 20
              run: |
                  BUILD_TYPE=simulated
                  GN_ARGS='chip_tests_zap_config="app1" chip_project_config_include_dirs=["../../examples/placeholder/linux/apps/app1/include", "../../config/standalone"] chip_config_network_layer_ble=false'
                  CHIP_ROOT_PATH=examples/placeholder/linux
                  CHIP_ROOT_PATH="$CHIP_ROOT_PATH" BUILD_TYPE="$BUILD_TYPE" scripts/build/gn_gen.sh --args="$GN_ARGS"
                  scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE"
            - name: Setup Build, Run Build and Run Tests
              timeout-minutes: 90
              run: |
                  BUILD_TYPE=gcc_release scripts/build/gn_gen.sh --args="is_debug=false"
                  scripts/run_in_build_env.sh "ninja -C ./out/gcc_release"
                  BUILD_TYPE=gcc_release scripts/tests/gn_tests.sh
            - name: Run Tests with sanitizers
              timeout-minutes: 60
              env:
                  LSAN_OPTIONS: detect_leaks=1
              run: |
                  for BUILD_TYPE in asan tsan ubsan; do
                      case $BUILD_TYPE in
                          "asan") GN_ARGS='is_clang=true is_asan=true';;
                          "msan") GN_ARGS='is_clang=true is_msan=true';;
                          "tsan") GN_ARGS='is_clang=true is_tsan=true chip_enable_wifi=false';;
                          "ubsan") GN_ARGS='is_clang=true is_ubsan=true';;
                      esac

                      rm -rf ./out/sanitizers
                      BUILD_TYPE=sanitizers scripts/build/gn_gen.sh --args="$GN_ARGS" --export-compile-commands
                      BUILD_TYPE=sanitizers scripts/tests/gn_tests.sh
                  done
            - name: Ensure codegen is done for sanitize
              timeout-minutes: 45
              run: |
                  ./scripts/run_in_build_env.sh "./scripts/run_codegen_targets.sh out/sanitizers"
            - name: Clang-tidy validation
              timeout-minutes: 60
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/run-clang-tidy-on-compile-commands.py \
                       --compile-database out/sanitizers/compile_commands.json \
                       --file-exclude-regex '/(repo|zzz_generated|lwip/standalone)/' \
                       check \
                    "
            - name: Build using build_examples.py
              timeout-minutes: 60
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py \
                       --target linux-x64-minmdns-ipv6only-clang \
                       --target linux-x64-rpc-console \
                       build \
                    "
            - name: Create a pre-generate directory and ensure compile-time codegen would fail
              run: |
                  ./scripts/run_in_build_env.sh "./scripts/codepregen.py ./zzz_pregenerated"
                  mv scripts/codegen.py scripts/codegen.py.renamed
            - name: Clean output
              run: rm -rf ./out
            - name: Build using build_examples.py (pregen)
              timeout-minutes: 60
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py \
                       --target linux-x64-all-clusters-ipv6only-clang \
                       --target linux-x64-chip-tool-ipv6only-clang \
                       --pregen-dir ./zzz_pregenerated \
                       build \
                    "
            - name: Check no code generation in output
              run: |
                  CNT=$(find out -name "CHIPClusters.h" | wc -l)
                  if [ "${CNT}" != "0" ]; then
                     echo "ERROR: found unexpected generated files:"
                     find out -name "CHIPClusters.h"
                     exit 1
                  fi
            - name: Undo code pre-generation changes (make compile time codegen work again)
              run: |
                  rm -rf ./zzz_pregenerated
                  mv scripts/codegen.py.renamed scripts/codegen.py
            - name: Run fake linux tests with build_examples
              timeout-minutes: 15
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/build/build_examples.py --target linux-fake-tests build"
            - name: Uploading core files
              uses: actions/upload-artifact@v3
              if: ${{ failure() && !env.ACT }}
              with:
                  name: crash-core-linux
                  path: /tmp/cores/
                  # Cores are big; don't hold on to them too long.
                  retention-days: 5
            # OBJDIR on linux is > 10K files and takes more than 50 minutes to upload, usually
            # having the job timeout.
            #
            # If re-enabling, some subset of this should be picked
            #
            # - name: Uploading objdir for debugging
            #   uses: actions/upload-artifact@v3
            #   if: ${{ failure() && !env.ACT }}
            #   with:
            #       name: crash-objdir-linux
            #       path: out/
            #       # objdirs are big; don't hold on to them too long.
            #       retention-days: 5

    build_linux_python_lib:
        name: Build on Linux (python_lib)
        timeout-minutes: 60

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

        container:
            image: connectedhomeip/chip-build:0.7.3
            volumes:
                - "/tmp/log_output:/tmp/test_logs"
            options: --sysctl "net.ipv6.conf.all.disable_ipv6=0
                net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"

        steps:
            - name: Dump GitHub context
              env:
                  GITHUB_CONTEXT: ${{ toJSON(github) }}
              run: echo "$GITHUB_CONTEXT"
            - name: Dump Concurrency context
              env:
                  CONCURRENCY_CONTEXT: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
              run: echo "$CONCURRENCY_CONTEXT"
            - uses: Wandalen/wretry.action@v1.0.36
              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 --allow-changing-global-git-config --shallow --platform linux

            - 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: 10
              run: bash scripts/bootstrap.sh

            - name: Setup Build, Run Build and Run Tests
              timeout-minutes: 50
              run: |
                  scripts/build/gn_gen.sh --args="enable_rtti=true enable_pylib=true chip_config_memory_debug_checks=false chip_config_memory_debug_dmalloc=false"
                  scripts/run_in_build_env.sh "ninja -C ./out"
                  scripts/tests/gn_tests.sh
            - name: Run Python library specific unit tests
              timeout-minutes: 5
              run: |
                  scripts/run_in_build_env.sh 'pip3 install ./out/controller/python/chip_core-0.0-cp37-abi3-linux_x86_64.whl'
                  scripts/run_in_build_env.sh 'pip3 install ./out/controller/python/chip_clusters-0.0-py3-none-any.whl'
                  scripts/run_in_build_env.sh 'pip3 install ./out/controller/python/chip_repl-0.0-py3-none-any.whl'
                  scripts/run_in_build_env.sh '(cd src/controller/python/test/unit_tests/ && python3 -m unittest -v)'

            - name: Run Python Setup Payload Generator Test
              timeout-minutes: 10
              run: |
                  scripts/run_in_build_env.sh 'scripts/examples/gn_build_example.sh examples/chip-tool out/'
                  scripts/run_in_build_env.sh 'pip3 install -r src/setup_payload/python/requirements.txt'
                  scripts/run_in_build_env.sh 'python3 src/setup_payload/tests/run_python_setup_payload_gen_test.py out/chip-tool'

    build_darwin:
        name: Build on Darwin (clang, python_lib, simulated)
        timeout-minutes: 200
        runs-on: macos-latest
        if: github.actor != 'restyled-io[bot]'

        steps:
            - uses: Wandalen/wretry.action@v1.0.36
              name: Checkout
              with:
                  action: actions/checkout@v3
                  with: |
                      token: ${{ github.token }}
                  attempt_limit: 3
                  attempt_delay: 2000
            #- name: Initialize CodeQL
            #  if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/master' }}
            #  uses: github/codeql-action/init@v1
            #  with:
            #     languages: "cpp"
            - name: Checkout submodules
              run: scripts/checkout_submodules.py --allow-changing-global-git-config --shallow --platform darwin
            - name: Try to ensure the directory for diagnostic log collection exists
              run: |
                  mkdir -p ~/Library/Logs/DiagnosticReports || true

            - 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: Setup and Build Simulated Device
              timeout-minutes: 20
              run: |
                  BUILD_TYPE=simulated
                  GN_ARGS='chip_tests_zap_config="app1" chip_project_config_include_dirs=["../../examples/placeholder/linux/apps/app1/include", "../../config/standalone"] chip_config_network_layer_ble=false'
                  CHIP_ROOT_PATH=examples/placeholder/linux
                  CHIP_ROOT_PATH="$CHIP_ROOT_PATH" BUILD_TYPE="$BUILD_TYPE" scripts/build/gn_gen.sh --args="$GN_ARGS"
                  scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE"
            - name: Setup Build, Run Build and Run Tests
              timeout-minutes: 120
              # We can't enable leak checking here in LSAN_OPTIONS, because on
              # Darwin that's only supported with a new enough clang, and we're
              # not building with the pigweed clang here.
              run: |
                  for BUILD_TYPE in default python_lib; do
                      case $BUILD_TYPE in
                          # We want to build various standalone example apps
                          # (similar to what examples-linux-standalone.yaml
                          # does), so use target_os="all" to get those picked
                          # up as part of the "unified" build.  But then to
                          # save CI resources we want to exclude the
                          # "host clang" build, which uses the pigweed
                          # clang.
                          "default") GN_ARGS='target_os="all" is_asan=true enable_host_clang_build=false';;
                          "python_lib") GN_ARGS='enable_rtti=true enable_pylib=true';;
                      esac
                      BUILD_TYPE=$BUILD_TYPE scripts/build/gn_gen.sh --args="$GN_ARGS" --export-compile-commands
                      scripts/run_in_build_env.sh "ninja -C ./out/$BUILD_TYPE"
                      BUILD_TYPE=$BUILD_TYPE scripts/tests/gn_tests.sh
                  done
            - name: Ensure codegen is done for sanitize
              timeout-minutes: 45
              run: |
                  ./scripts/run_in_build_env.sh "./scripts/run_codegen_targets.sh out/default"
            - name: Clang-tidy validation
              timeout-minutes: 60
              run: |
                  ./scripts/run_in_build_env.sh \
                    "./scripts/run-clang-tidy-on-compile-commands.py \
                       --compile-database out/default/compile_commands.json \
                       check \
                    "
            - name: Uploading diagnostic logs
              uses: actions/upload-artifact@v3
              if: ${{ failure() && !env.ACT }}
              with:
                  name: crash-log-darwin
                  path: ~/Library/Logs/DiagnosticReports/
            # - name: Perform CodeQL Analysis
            #   if: ${{ github.event_name == 'push' && github.event.ref == 'refs/heads/master' }}
            #   uses: github/codeql-action/analyze@v1
            # TODO Log Upload https://github.com/project-chip/connectedhomeip/issues/2227
            # TODO https://github.com/project-chip/connectedhomeip/issues/1512

    build_linux_gcc_coverage:
        name: Build on Linux (coverage)
        timeout-minutes: 85

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

        container:
            image: connectedhomeip/chip-build:0.7.3
            volumes:
                - "/tmp/log_output:/tmp/test_logs"
            options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
                net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"

        steps:
            - uses: Wandalen/wretry.action@v1.0.36
              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 --allow-changing-global-git-config --shallow --platform linux

            - 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: 10
              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: Run Build Coverage
              timeout-minutes: 30
              run: ./scripts/build_coverage.sh
