name: "MiNiFi-CPP CI"
on:
  push:
  pull_request:
  workflow_dispatch:
  schedule:
    - cron: '0 1 * * 1'
env:
  DOCKER_CMAKE_FLAGS: -DDOCKER_VERIFY_THREAD=3 -DUSE_SHARED_LIBS= -DSTRICT_GSL_CHECKS=AUDIT -DCI_BUILD=ON -DENABLE_AWS=ON -DENABLE_KAFKA=ON -DENABLE_MQTT=ON -DENABLE_AZURE=ON -DENABLE_SQL=ON \
    -DENABLE_SPLUNK=ON -DENABLE_GCP=ON -DENABLE_OPC=ON -DENABLE_PYTHON_SCRIPTING=ON -DENABLE_LUA_SCRIPTING=ON -DENABLE_KUBERNETES=ON -DENABLE_TEST_PROCESSORS=ON -DENABLE_PROMETHEUS=ON \
    -DENABLE_ELASTICSEARCH=ON -DENABLE_GRAFANA_LOKI=ON -DENABLE_COUCHBASE=ON -DENABLE_LLAMACPP=ON -DDOCKER_BUILD_ONLY=ON -DMINIFI_PERFORMANCE_TESTS=ON
  CCACHE_DIR: ${{ GITHUB.WORKSPACE }}/.ccache
jobs:
  macos_xcode:
    name: "macOS 26 aarch64"
    runs-on: macos-26
    timeout-minutes: 240
    env:
      MACOS_MINIFI_OPTIONS: >-
        -DCMAKE_BUILD_TYPE=Release
        -DCI_BUILD=ON
        -DCUSTOM_MALLOC=OFF
        -DDOCKER_BUILD_ONLY=OFF
        -DDOCKER_PUSH=OFF
        -DDOCKER_SKIP_TESTS=ON
        -DENABLE_ALL=OFF
        -DENABLE_AWS=ON
        -DENABLE_AZURE=ON
        -DENABLE_BUSTACHE=OFF
        -DENABLE_BZIP2=ON
        -DENABLE_CIVET=ON
        -DENABLE_CONTROLLER=ON
        -DENABLE_COUCHBASE=ON
        -DENABLE_ELASTICSEARCH=ON
        -DENABLE_ENCRYPT_CONFIG=ON
        -DENABLE_GCP=ON
        -DENABLE_KUBERNETES=ON
        -DENABLE_LIBARCHIVE=ON
        -DENABLE_LLAMACPP=ON
        -DENABLE_KAFKA=ON
        -DENABLE_LUA_SCRIPTING=ON
        -DENABLE_LZMA=ON
        -DENABLE_MQTT=ON
        -DENABLE_OPC=ON
        -DENABLE_OPENCV=ON
        -DENABLE_OPS=ON
        -DENABLE_PROMETHEUS=ON
        -DENABLE_PYTHON_SCRIPTING=ON
        -DENABLE_ROCKSDB=ON
        -DENABLE_SFTP=OFF
        -DENABLE_SPLUNK=ON
        -DENABLE_SQL=ON
        -DENABLE_TEST_PROCESSORS=OFF
        -DFORCE_COLORED_OUTPUT=OFF
        -DLIBC_STATIC=OFF
        -DMINIFI_ADVANCED_ASAN_BUILD=OFF
        -DMINIFI_ADVANCED_CODE_COVERAGE=OFF
        -DMINIFI_FAIL_ON_WARNINGS=OFF
        -DMINIFI_USE_REAL_ODBC_TEST_DRIVER=ON
        -DPORTABLE=ON
        -DSKIP_TESTS=OFF
        -DUSE_SHARED_LIBS=ON
        -DMINIFI_PERFORMANCE_TESTS=ON
    steps:
      - id: checkout
        uses: actions/checkout@v6
      - name: cache restore
        uses: actions/cache/restore@v5
        with:
          path: ${{ env.CCACHE_DIR }}
          key: macos-arm-xcode-ccache-${{github.ref}}-${{github.sha}}
          restore-keys: |
            macos-arm-xcode-ccache-${{github.ref}}-
            macos-arm-xcode-ccache-refs/heads/main-
      - id: install_dependencies
        run: |
          brew update
          brew install ossp-uuid bison flex ccache sqliteodbc automake autoconf
      - id: setup_env
        name: setup enviroment
        run: |
          echo "PATH=/opt/homebrew/opt/ccache:/opt/homebrew/opt/ccache/bin:/opt/homebrew/opt/ccache/libexec:$PATH" >> $GITHUB_ENV
          echo "DYLD_LIBRARY_PATH=$(brew --prefix)/lib" >> $GITHUB_ENV
          echo -e "127.0.0.1\t$HOSTNAME" | sudo tee -a /etc/hosts > /dev/null
      - name: build
        run: |
          python -m venv venv && source venv/bin/activate && pip install -r requirements.txt && python main.py --noninteractive --skip-compiler-install --cmake-options="-DCMAKE_C_FLAGS=${CPPFLAGS} ${CFLAGS} -DCMAKE_CXX_FLAGS=${CPPFLAGS} ${CXXFLAGS}" --minifi-options="${MACOS_MINIFI_OPTIONS}"
        working-directory: bootstrap
      - name: cache save
        uses: actions/cache/save@v5
        if: always()
        with:
          path: ${{ env.CCACHE_DIR }}
          key: macos-arm-xcode-ccache-${{github.ref}}-${{github.sha}}
      - name: test
        id: test
        run: |
          # Set core file size limit to unlimited
          ulimit -c unlimited
          ctest --timeout 300 -j4 --output-on-failure --timeout 300 -LE performance
        working-directory: build
      - name: check-cores
        if: ${{ failure() && steps.test.conclusion == 'failure' }}
        run: |
          if [ "$(ls -A /cores)" ]; then echo "CORES_EXIST=true" >> $GITHUB_ENV; fi
      - uses: actions/upload-artifact@v7
        if: ${{ failure() && env.CORES_EXIST == 'true' }}
        with:
          name: macos-coredumps
          path: /cores
      - uses: actions/upload-artifact@v7
        if: ${{ failure() && env.CORES_EXIST == 'true' }}
        with:
          name: macos-binaries
          path: build/bin
  windows_VS2022:
    name: "Windows Server 2025 x86_64"
    runs-on: windows-2025
    timeout-minutes: 240
    env:
      WINDOWS_MINIFI_OPTIONS: >-
        -DCMAKE_BUILD_TYPE=Release
        -DBUILD_ROCKSDB=ON
        -DBUILD_SHARED_LIBS=OFF
        -DCI_BUILD=ON
        -DCUSTOM_MALLOC=OFF
        -DDOCKER_BUILD_ONLY=OFF
        -DDOCKER_PUSH=OFF
        -DDOCKER_SKIP_TESTS=ON
        -DENABLE_ALL=OFF
        -DENABLE_AWS=ON
        -DENABLE_AZURE=ON
        -DENABLE_BUSTACHE=OFF
        -DENABLE_BZIP2=ON
        -DENABLE_CIVET=ON
        -DENABLE_CONTROLLER=ON
        -DENABLE_COUCHBASE=ON
        -DENABLE_COVERAGE=
        -DENABLE_ELASTICSEARCH=ON
        -DENABLE_ENCRYPT_CONFIG=ON
        -DENABLE_GCP=ON
        -DENABLE_GRAFANA_LOKI=ON
        -DENABLE_KUBERNETES=ON
        -DENABLE_LIBARCHIVE=ON
        -DENABLE_KAFKA=ON
        -DENABLE_LLAMACPP=ON
        -DENABLE_LUA_SCRIPTING=ON
        -DENABLE_LZMA=ON
        -DENABLE_MQTT=ON
        -DENABLE_OPC=ON
        -DENABLE_OPENCV=OFF
        -DENABLE_OPS=ON
        -DENABLE_PDH=ON
        -DENABLE_PROMETHEUS=ON
        -DENABLE_PYTHON_SCRIPTING=ON
        -DENABLE_ROCKSDB=ON
        -DENABLE_SFTP=OFF
        -DENABLE_SMB=ON
        -DENABLE_SPLUNK=ON
        -DENABLE_SQL=ON
        -DENABLE_TEST_PROCESSORS=OFF
        -DENABLE_WEL=ON
        -DFORCE_COLORED_OUTPUT=ON
        -DINSTALLER_MERGE_MODULES=OFF
        -DMINIFI_FAIL_ON_WARNINGS=ON
        -DMSI_REDISTRIBUTE_UCRT_NONASL=OFF
        -DPORTABLE=ON
        -DSKIP_TESTS=OFF
        -DSTATIC_BUILD=ON
        -DMINIFI_USE_REAL_ODBC_TEST_DRIVER=ON
        -DUSE_SHARED_LIBS=OFF
        -DMINIFI_PERFORMANCE_TESTS=ON
    steps:
      - name: Support longpaths
        run: git config --system core.longpaths true
      - name: Checkout project
        uses: actions/checkout@v6
      - name: Restore cache
        uses: actions/cache/restore@v5
        with:
          path: ~/AppData/Local/Mozilla/sccache/cache
          key: ${{ runner.os }}-2022-sccache-${{ hashFiles('**/CMakeLists.txt') }}
          restore-keys: |
            ${{ runner.os }}-2022-sccache-
      - name: Set up Python
        run: choco install -y python sccache && refreshenv
        shell: cmd
      - name: Install sqliteodbc driver
        run: |
          Invoke-WebRequest -Uri "http://www.ch-werner.de/sqliteodbc/sqliteodbc_w64.exe" -OutFile "sqliteodbc_w64.exe"
          if ((Get-FileHash 'sqliteodbc_w64.exe').Hash -ne "a4804e4f54f42c721df1323c5fcac101a8c7a577e7f20979227324ceab572d51") {Write "Hash mismatch"; Exit 1}
          Start-Process -FilePath ".\sqliteodbc_w64.exe" -ArgumentList "/S" -Wait
        shell: powershell
      - name: Zero sccache stats
        run: sccache --zero-stats
        shell: bash
      - name: build
        run: |
          python -m venv venv & venv\Scripts\activate & pip install -r requirements.txt & python main.py --noninteractive --skip-compiler-install --minifi-options="%WINDOWS_MINIFI_OPTIONS%" --cmake-options="-DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache"
        shell: cmd
        working-directory: bootstrap
      - name: Save cache
        uses: actions/cache/save@v5
        if: always()
        with:
          path: ~/AppData/Local/Mozilla/sccache/cache
          key: ${{ runner.os }}-2022-sccache-${{ github.ref }}-${{ github.sha }}
      - name: Run tests
        run: ctest --timeout 300 --parallel %NUMBER_OF_PROCESSORS% -C Release --output-on-failure -LE performance
        shell: cmd
        working-directory: ./build
      - name: Upload artifact
        if: failure()
        uses: actions/upload-artifact@v7
        with:
          name: cpack_error
          path: D:/a/nifi-minifi-cpp/nifi-minifi-cpp/build/_CPack_Packages/win64/WIX/wix.log
      - name: Run sccache stat for check
        shell: bash
        run: sccache --show-stats
  ubuntu_22_04_clang_arm:
    name: "Ubuntu 22.04 clang aarch64"
    runs-on: ubuntu-22.04-arm
    timeout-minutes: 240
    env:
      UBUNTU_CLANG_MINIFI_OPTIONS: >-
        -DCMAKE_BUILD_TYPE=RelWithDebInfo
        -DCI_BUILD=OFF
        -DCUSTOM_MALLOC=OFF
        -DDOCKER_BUILD_ONLY=OFF
        -DDOCKER_PUSH=OFF
        -DDOCKER_SKIP_TESTS=ON
        -DENABLE_ALL=OFF
        -DENABLE_AWS=ON
        -DENABLE_AZURE=ON
        -DENABLE_BUSTACHE=ON
        -DENABLE_BZIP2=ON
        -DENABLE_CIVET=ON
        -DENABLE_CONTROLLER=ON
        -DENABLE_COUCHBASE=ON
        -DENABLE_ELASTICSEARCH=ON
        -DENABLE_ENCRYPT_CONFIG=ON
        -DENABLE_EXECUTE_PROCESS=ON
        -DENABLE_GCP=ON
        -DENABLE_GRAFANA_LOKI=ON
        -DENABLE_KUBERNETES=ON
        -DENABLE_LIBARCHIVE=ON
        -DENABLE_LLAMACPP=ON
        -DENABLE_KAFKA=ON
        -DENABLE_LUA_SCRIPTING=ON
        -DENABLE_LZMA=ON
        -DENABLE_MQTT=ON
        -DENABLE_OPC=ON
        -DENABLE_OPENCV=ON
        -DENABLE_OPS=ON
        -DENABLE_PROCFS=ON
        -DENABLE_PROMETHEUS=ON
        -DENABLE_PYTHON_SCRIPTING=ON
        -DENABLE_ROCKSDB=ON
        -DENABLE_SFTP=ON
        -DENABLE_SPLUNK=ON
        -DENABLE_SQL=ON
        -DENABLE_SYSTEMD=ON
        -DENABLE_TEST_PROCESSORS=OFF
        -DFORCE_COLORED_OUTPUT=ON
        -DMINIFI_FAIL_ON_WARNINGS=ON
        -DPORTABLE=ON
        -DSKIP_TESTS=OFF
        -DMINIFI_USE_REAL_ODBC_TEST_DRIVER=OFF
        -DUSE_SHARED_LIBS=ON
        -DMINIFI_PERFORMANCE_TESTS=ON
    steps:
      - id: checkout
        uses: actions/checkout@v6
      - name: cache restore
        uses: actions/cache/restore@v5
        with:
          path: ${{ env.CCACHE_DIR }}
          key: ubuntu-22.04-arm-all-clang-ccache-${{github.ref}}-${{github.sha}}
          restore-keys: |
            ubuntu-22.04-arm-all-clang-ccache-${{github.ref}}-
            ubuntu-22.04-arm-all-clang-ccache-refs/heads/main-
      - id: install_deps
        run: |
          wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
          echo "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main" | sudo tee -a /etc/apt/sources.list
          echo "deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy-20 main" | sudo tee -a /etc/apt/sources.list
          sudo apt update
          sudo apt install -y ccache libfl-dev clang-20 clang-tidy-20 libc++-20-dev libc++abi-20-dev libsqliteodbc parallel
          echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
          echo -e "127.0.0.1\t$HOSTNAME" | sudo tee -a /etc/hosts > /dev/null
      - id: free_disk_space
        run: |
          # We can gain additional disk space on the Ubuntu runners thanks to these suggestions:
          # https://github.com/actions/runner-images/issues/2840#issuecomment-790492173
          # https://github.com/actions/runner-images/issues/2606#issuecomment-772683150
          sudo rm -rf /usr/share/dotnet
          sudo rm -rf /usr/local/lib/android
          sudo rm -rf /opt/ghc
          sudo rm -rf "/usr/local/share/boost"
          sudo rm -rf "$AGENT_TOOLSDIRECTORY"
      - name: build
        run: |
          export CC=clang-20
          export CXX=clang++-20
          export CXXFLAGS="-stdlib=libc++"
          export LDFLAGS="-stdlib=libc++"
          python3 -m venv venv && source venv/bin/activate \
            && pip install -r requirements.txt \
            && python main.py --noninteractive --skip-compiler-install --cmake-options="-DSTRICT_GSL_CHECKS=AUDIT -DCMAKE_EXPORT_COMPILE_COMMANDS=ON" --minifi-options="${UBUNTU_CLANG_MINIFI_OPTIONS}"
        working-directory: bootstrap
      - id: cache_save
        uses: actions/cache/save@v5
        if: always()
        with:
          path: ${{ env.CCACHE_DIR }}
          key: ubuntu-22.04-arm-all-clang-ccache-${{github.ref}}-${{github.sha}}
      - name: test
        id: test
        run: |
          # Set core file size limit to unlimited
          ulimit -c unlimited
          ctest --timeout 300 -j$(nproc) --output-on-failure -LE performance
        working-directory: build
      - name: performance-test
        id: performance-test
        run: ctest -j1 --verbose -L performance
        working-directory: build
      - name: list-changed-cpp-files
        id: list-changed-cpp-files
        run: |
          head_commit=${{github.sha}}
          if [[ -n "${{github.event.pull_request.base.sha}}" ]]; then
            base_commit=${{github.event.pull_request.base.sha}}
            git fetch --depth=1 origin ${base_commit}
          else
            git fetch --depth=2 origin ${head_commit}
            base_commit=$(git log -n2 --format=format:%H ${head_commit} | tail -n1)
          fi
          echo "Collecting added/copied/modified/renamed/type-changed .cpp files from ${base_commit} to ${head_commit}"
          echo "files=$(git diff --name-only --diff-filter=ACMRT ${base_commit} ${head_commit} | grep '\.cpp$' | xargs)" >> $GITHUB_OUTPUT
      - name: clang-tidy
        run: |
          # https://stackoverflow.com/questions/58466701/clang-tidy-cant-locate-stdlib-headers
          sed -i -e 's/\/usr\/lib\/ccache\/clang++-20/\/lib\/llvm-20\/bin\/clang++/g' build/compile_commands.json
          sed -i -e 's/\/usr\/lib\/ccache\/clang-20/\/lib\/llvm-20\/bin\/clang/g' build/compile_commands.json
          sed -i -e 's/\/usr\/lib\/ccache\/c++/\/lib\/llvm-20\/bin\/clang++/g' build/compile_commands.json
          sed -i -e 's/\/usr\/lib\/ccache\/cc/\/lib\/llvm-20\/bin\/clang/g' build/compile_commands.json

          parallel -j$(( $(nproc) + 1 )) ./run_clang_tidy.sh ::: ${{steps.list-changed-cpp-files.outputs.files}}
      - name: check-cores
        if: ${{ failure() && steps.test.conclusion == 'failure' }}
        run: |
          if [ "$(ls -A /var/lib/apport/coredump/)" ]; then echo "CORES_EXIST=true" >> $GITHUB_ENV; fi
      - uses: actions/upload-artifact@v7
        if: ${{ failure() && env.CORES_EXIST == 'true' }}
        with:
          name: ubuntu-clang-coredumps
          path: /var/lib/apport/coredump/
      - uses: actions/upload-artifact@v7
        if: ${{ failure() && env.CORES_EXIST == 'true' }}
        with:
          name: ubuntu-clang-binaries
          path: build/bin
  rocky:
    name: "Rocky (docker) x86_64"
    runs-on: ubuntu-24.04
    timeout-minutes: 180
    steps:
      - id: checkout
        uses: actions/checkout@v6
      - name: cache restore
        uses: actions/cache/restore@v5
        with:
          path: ${{ env.CCACHE_DIR }}
          key: rocky-ccache-${{github.ref}}-${{github.sha}}
          restore-keys: |
            rocky-ccache-${{github.ref}}-
            rocky-ccache-refs/heads/main-
      - id: install_deps
        run: |
          sudo apt update
          sudo apt install -y ccache
          echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
      - id: free_disk_space
        run: |
          # We can gain additional disk space on the Ubuntu runners thanks to these suggestions:
          # https://github.com/actions/runner-images/issues/2840#issuecomment-790492173
          # https://github.com/actions/runner-images/issues/2606#issuecomment-772683150
          sudo rm -rf /usr/share/dotnet
          sudo rm -rf /usr/local/lib/android
          sudo rm -rf /opt/ghc
          sudo rm -rf "/usr/local/share/boost"
          sudo rm -rf "$AGENT_TOOLSDIRECTORY"
      - id: build
        run: |
          # rocky build can run out of the github runners' disk space if built with RelWithDebInfo so we keep the Release build here
          mkdir build && cd build && cmake -DUSE_SHARED_LIBS=ON -DCI_BUILD=ON -DCMAKE_BUILD_TYPE=Release -DSTRICT_GSL_CHECKS=AUDIT -DMINIFI_FAIL_ON_WARNINGS=OFF -DENABLE_AWS=ON -DENABLE_AZURE=ON \
              -DENABLE_ENCRYPT_CONFIG=ON -DENABLE_KAFKA=ON -DENABLE_MQTT=ON -DENABLE_OPC=ON -DENABLE_OPENCV=ON -DENABLE_OPS=ON -DENABLE_SQL=ON -DENABLE_SYSTEMD=ON \
              -DENABLE_PYTHON_SCRIPTING=ON -DENABLE_LUA_SCRIPTING=ON -DENABLE_KUBERNETES=ON -DENABLE_GCP=ON -DENABLE_PROCFS=ON -DENABLE_PROMETHEUS=ON \
              -DENABLE_ELASTICSEARCH=ON -DENABLE_GRAFANA_LOKI=ON -DENABLE_LLAMACPP=ON -DDOCKER_SKIP_TESTS=OFF -DDOCKER_BUILD_ONLY=ON -DDOCKER_CCACHE_DUMP_LOCATION=${{ env.CCACHE_DIR }} .. && make rocky-test
      - name: cache save
        uses: actions/cache/save@v5
        if: always()
        with:
          path: ${{ env.CCACHE_DIR }}
          key: rocky-ccache-${{github.ref}}-${{github.sha}}
      - id: test
        run: |
          # Set core file size limit to unlimited
          ulimit -c unlimited
          echo '/cores/core.%e.%p' | sudo tee /proc/sys/kernel/core_pattern
          sudo mkdir /cores
          sudo chmod 777 /cores
          docker run --name rocky-test --init --ulimit core=-1 --mount type=bind,source=/cores,target=/cores $(docker images apacheminificpp --format "{{.Repository}}:{{.Tag}}" | grep rocky | head -n1) bash -c 'cd /opt/minifi/build && make test ARGS="--timeout 300 -j8 --output-on-failure"'
      - name: check-cores
        if: ${{ failure() && steps.test.conclusion == 'failure' }}
        run: |
          if [ "$(ls -A /cores)" ]; then
            echo "CORES_EXIST=true" >> $GITHUB_ENV;
            docker cp rocky-test:/opt/minifi/build/bin /tmp
            sudo chmod -R 777 /cores
          fi
      - uses: actions/upload-artifact@v7
        if: ${{ failure() && env.CORES_EXIST == 'true' }}
        with:
          name: rocky-crashes
          path: /cores
      - uses: actions/upload-artifact@v7
        if: ${{ failure() && env.CORES_EXIST == 'true' }}
        with:
          name: rocky-binaries
          path: /tmp/bin
  docker_build:
    name: "Docker build for integration tests (x86_64)"
    runs-on: ubuntu-22.04
    timeout-minutes: 180
    steps:
      - id: checkout
        uses: actions/checkout@v6
      - name: cache restore
        uses: actions/cache/restore@v5
        with:
          path: ${{ env.CCACHE_DIR }}
          key: docker-ccache-${{github.ref}}-${{github.sha}}
          restore-keys: |
            docker-ccache-${{github.ref}}-
            docker-ccache-refs/heads/main
      - id: free_disk_space
        run: |
          # We can gain additional disk space on the Ubuntu runners thanks to these suggestions:
          # https://github.com/actions/runner-images/issues/2840#issuecomment-790492173
          # https://github.com/actions/runner-images/issues/2606#issuecomment-772683150
          sudo rm -rf /usr/share/dotnet
          sudo rm -rf /usr/local/lib/android
          sudo rm -rf /opt/ghc
          sudo rm -rf "/usr/local/share/boost"
          sudo rm -rf "$AGENT_TOOLSDIRECTORY"
      - id: build
        run: |
          mkdir build
          cd build
          cmake ${DOCKER_CMAKE_FLAGS} -DDOCKER_CCACHE_DUMP_LOCATION=${{ env.CCACHE_DIR }} ..
          make docker
      - name: cache save
        uses: actions/cache/save@v5
        if: always()
        with:
          path: ${{ env.CCACHE_DIR }}
          key: docker-ccache-${{github.ref}}-${{github.sha}}
      - name: Save docker image
        run: cd build && docker save -o minifi_docker.tar apacheminificpp:$(grep CMAKE_PROJECT_VERSION:STATIC CMakeCache.txt | cut -d "=" -f2)
      - name: Upload artifact
        uses: actions/upload-artifact@v7
        with:
          name: minifi_docker
          path: build/minifi_docker.tar
  modular_docker_tests:
    name: "Modular Docker integration tests (x86_64)"
    needs: docker_build
    runs-on: ubuntu-24.04
    timeout-minutes: 180
    steps:
      - id: checkout
        uses: actions/checkout@v6
      - id: run_cmake
        name: Run CMake
        run: |
          mkdir build
          cd build
          cmake ${DOCKER_CMAKE_FLAGS} ..
      - name: Download artifact
        uses: actions/download-artifact@v8
        with:
          name: minifi_docker
          path: build
      - name: Load Docker image
        run: |
          docker load --input ./build/minifi_docker.tar
      - id: install_deps
        name: Install dependencies for Docker Verify
        run: |
          sudo apt update
          sudo apt install -y python3-virtualenv
      - id: free_disk_space
        run: |
          # We can gain additional disk space on the Ubuntu runners thanks to these suggestions:
          # https://github.com/actions/runner-images/issues/2840#issuecomment-790492173
          # https://github.com/actions/runner-images/issues/2606#issuecomment-772683150
          sudo rm -rf /usr/share/dotnet
          sudo rm -rf /usr/local/lib/android
          sudo rm -rf /opt/ghc
          sudo rm -rf "/usr/local/share/boost"
          sudo rm -rf "$AGENT_TOOLSDIRECTORY"
      - id: test
        name: Docker Verify
        working-directory: ./build
        run: make docker-verify-modular
      - name: Test Reporter
        if: always()
        uses: dorny/test-reporter@a43b3a5f7366b97d083190328d2c652e1a8b6aa2 # v3
        with:
          name: Docker integration tests
          path: build/behavex_output_modular/behave/*.xml
          reporter: java-junit
          only-summary: 'true'
          list-tests: 'failed'
          list-suites: 'failed'
      - name: Upload artifact
        if: failure()
        uses: actions/upload-artifact@v7
        with:
          name: behavex_output_modular
          path: build/behavex_output_modular
  linters:
    name: "C++ lint + Shellcheck + Flake8"
    runs-on: ubuntu-22.04-arm
    timeout-minutes: 15
    steps:
      - id: checkout
        uses: actions/checkout@v6

      - id: install_deps
        run: sudo apt update && sudo apt install -y flake8

      - id: cpp_lint
        name: C++ linter
        continue-on-error: true
        run: python3 thirdparty/google-styleguide/run_linter.py -q -i controller/ core-framework/ encrypt-config/ extension-framework/ extensions/ libminifi/ minifi-api/ minifi_main/

      - id: shellcheck
        name: Shellcheck
        continue-on-error: true
        run: ./run_shellcheck.sh .

      - id: flake8_check
        name: Flake8 check
        continue-on-error: true
        run: ./run_flake8.sh .

      - name: Check Linter Statuses
        if: steps.cpp_lint.outcome == 'failure' || steps.shellcheck.outcome == 'failure' || steps.flake8_check.outcome == 'failure'
        run: |
          echo "One or more linters failed. Failing the workflow."
          exit 1
