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

on:
    # For now, only manual triggers.
    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
    
jobs:
    build_linux_fuzzing:
        name: Build on Linux

        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"

        steps:
            - name: Checkout
              uses: actions/checkout@v3
            - run: apt-get update
            - run: apt-get install --fix-missing llvm-10 clang-10
            - name: Try to ensure the objdir-clone dir exists
              run: |
                  mkdir objdir-clone || true

            - name: Bootstrap Cache
              uses: ./.github/actions/bootstrap-cache
            - name: Bootstrap
              uses: ./.github/actions/bootstrap
            - name: Upload Bootstrap Logs
              uses: ./.github/actions/upload-bootstrap-logs

            - name: Build all-clusters-app
              run: |
                  ./scripts/run_in_build_env.sh \
                     "./scripts/build/build_examples.py \
                        --target linux-x64-all-clusters-no-ble-libfuzzer \
                        build \
                        --copy-artifacts-to objdir-clone \
                     "
            - name: Uploading binaries
              uses: actions/upload-artifact@v3
              if: ${{ !env.ACT }}
              with:
                  name: objdir-linux
                  path: objdir-clone/
                  # objdirs are big; don't hold on to them too long.
                  retention-days: 5

    build_darwin_fuzzing:
        name: Build on Darwin
        runs-on: macos-latest
        if: github.actor != 'restyled-io[bot]'

        steps:
            - name: Checkout
              uses: actions/checkout@v3
            - name: Setup Environment
              run: brew install llvm
            - name: Try to ensure the objdir-clone dir exists
              run: |
                  mkdir objdir-clone || true

            - name: Bootstrap Cache
              uses: ./.github/actions/bootstrap-cache
            - name: Bootstrap
              uses: ./.github/actions/bootstrap
            - name: Upload Bootstrap Logs
              uses: ./.github/actions/upload-bootstrap-logs

            - name: Build all-clusters-app
              run: |
                  ./scripts/run_in_build_env.sh \
                     "./scripts/build/build_examples.py \
                        --target darwin-x64-all-clusters-no-ble-asan-libfuzzer-clang \
                        build \
                        --copy-artifacts-to objdir-clone \
                     "
            - name: Uploading binaries
              uses: actions/upload-artifact@v3
              if: ${{ !env.ACT }}
              with:
                  name: crash-darwin
                  path: objdir-clone/
                  # objdirs are big; don't hold on to them too long.
                  retention-days: 5
