Skip to content

MINIFICPP-2487 - Destroy PyException while holding GIL #5656

MINIFICPP-2487 - Destroy PyException while holding GIL

MINIFICPP-2487 - Destroy PyException while holding GIL #5656

Workflow file for this run

name: "MiNiFi-CPP CI"
on: [push, pull_request, workflow_dispatch]
env:
DOCKER_CMAKE_FLAGS: -DDOCKER_VERIFY_THREAD=3 -DUSE_SHARED_LIBS= -DSTRICT_GSL_CHECKS=AUDIT -DCI_BUILD=ON -DENABLE_AWS=ON -DENABLE_LIBRDKAFKA=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 -DDOCKER_BUILD_ONLY=ON
SCCACHE_GHA_ENABLE: true
CCACHE_DIR: ${{ GITHUB.WORKSPACE }}/.ccache
jobs:
macos_xcode:
name: "macos-xcode"
runs-on: macos-14
timeout-minutes: 180
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_ELASTICSEARCH=ON
-DENABLE_ENCRYPT_CONFIG=ON
-DENABLE_EXPRESSION_LANGUAGE=ON
-DENABLE_GCP=ON
-DENABLE_KUBERNETES=ON
-DENABLE_LIBARCHIVE=ON
-DENABLE_LIBRDKAFKA=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
steps:
- id: checkout
uses: actions/checkout@v4
- name: cache restore
uses: actions/cache/restore@v4
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 ninja
- 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@v4
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 -j4 --output-on-failure --timeout 300
working-directory: build
- name: linter
run: ninja linter
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@v4
if: ${{ failure() && env.CORES_EXIST == 'true' }}
with:
name: macos-coredumps
path: /cores
- uses: actions/upload-artifact@v4
if: ${{ failure() && env.CORES_EXIST == 'true' }}
with:
name: macos-binaries
path: build/bin
windows_VS2022:
name: "windows-2022"
runs-on: windows-2022
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_COVERAGE=
-DENABLE_ELASTICSEARCH=ON
-DENABLE_ENCRYPT_CONFIG=ON
-DENABLE_EXPRESSION_LANGUAGE=ON
-DENABLE_GCP=ON
-DENABLE_GRAFANA_LOKI=ON
-DENABLE_KUBERNETES=ON
-DENABLE_LIBARCHIVE=ON
-DENABLE_LIBRDKAFKA=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
steps:
- name: Support longpaths
run: git config --system core.longpaths true
- name: Checkout project
uses: actions/checkout@v4
- name: Restore cache
uses: actions/cache/restore@v4
with:
path: ~/AppData/Local/Mozilla/sccache/cache
key: ${{ runner.os }}-2022-sccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-2022-sccache-${{ github.ref }}
${{ runner.os }}-2022-sccache-refs/heads/main
${{ runner.os }}-2022-sccache
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@v0.0.4
- name: Set up Python
run: choco -y install python & 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: Add sccache to path
run: '[Environment]::SetEnvironmentVariable("PATH", [Environment]::GetEnvironmentVariable("PATH", [EnvironmentVariableTarget]::Machine) + ";" + (Split-Path -Path $env:SCCACHE_PATH -Parent), [EnvironmentVariableTarget]::Machine);'
shell: powershell
- name: Install jom
run: |
Invoke-WebRequest -Uri "http://download.qt.io/official_releases/jom/jom_1_1_4.zip" -OutFile "jom.zip"
if ((Get-FileHash 'jom.zip').Hash -ne "d533c1ef49214229681e90196ed2094691e8c4a0a0bef0b2c901debcb562682b") {Write "Hash mismatch"; Exit 1}
New-Item -ItemType Directory -Path D:\jom
Expand-Archive -Path jom.zip -DestinationPath D:\jom
[Environment]::SetEnvironmentVariable("PATH", [Environment]::GetEnvironmentVariable("PATH", [EnvironmentVariableTarget]::Machine) + ";D:\jom", [EnvironmentVariableTarget]::Machine);
shell: powershell
- 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@v4
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
shell: cmd
working-directory: ./build
- name: Run linter
run: cmake --build . --target linter --config Release -j 8
shell: cmd
working-directory: ./build
- name: Upload artifact
if: failure()
uses: actions/upload-artifact@v4
with:
name: cpack_error
path: D:/a/nifi-minifi-cpp/nifi-minifi-cpp/build/_CPack_Packages/win64/WIX/wix.log
ubuntu_24_04:
name: "ubuntu-24.04"
runs-on: ubuntu-24.04
timeout-minutes: 120
env:
UBUNTU_GCC_MINIFI_OPTIONS: >-
-DCMAKE_BUILD_TYPE=Release
-DCI_BUILD=OFF
-DCUSTOM_MALLOC=OFF
-DDOCKER_BUILD_ONLY=OFF
-DDOCKER_PUSH=OFF
-DDOCKER_SKIP_TESTS=ON
-DENABLE_ALL=OFF
-DENABLE_AWS=OFF
-DENABLE_AZURE=OFF
-DENABLE_BUSTACHE=ON
-DENABLE_BZIP2=ON
-DENABLE_CIVET=ON
-DENABLE_CONTROLLER=ON
-DENABLE_ELASTICSEARCH=OFF
-DENABLE_ENCRYPT_CONFIG=ON
-DENABLE_EXPRESSION_LANGUAGE=ON
-DENABLE_GCP=OFF
-DENABLE_KUBERNETES=OFF
-DENABLE_LIBARCHIVE=ON
-DENABLE_LIBRDKAFKA=OFF
-DENABLE_LUA_SCRIPTING=OFF
-DENABLE_LZMA=ON
-DENABLE_MQTT=OFF
-DENABLE_OPC=OFF
-DENABLE_OPENCV=OFF
-DENABLE_OPS=ON
-DENABLE_PROCFS=OFF
-DENABLE_PROMETHEUS=ON
-DENABLE_PYTHON_SCRIPTING=OFF
-DENABLE_ROCKSDB=ON
-DENABLE_SFTP=ON
-DENABLE_SPLUNK=OFF
-DENABLE_SQL=OFF
-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
steps:
- id: checkout
uses: actions/checkout@v4
- name: cache restore
uses: actions/cache/restore@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ubuntu-24.04-ccache-${{github.ref}}-${{github.sha}}
restore-keys: |
ubuntu-24.04-ccache-${{github.ref}}-
ubuntu-24.04-ccache-refs/heads/main-
- id: install_deps
run: |
sudo apt update
sudo apt install -y ccache libfl-dev python3 python3-venv
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
echo -e "127.0.0.1\t$HOSTNAME" | sudo tee -a /etc/hosts > /dev/null
- name: build
run: |
python3 -m venv venv && source venv/bin/activate \
&& pip install -r requirements.txt \
&& python main.py --noninteractive --minifi-options="${UBUNTU_GCC_MINIFI_OPTIONS}" --cmake-options="-DSTRICT_GSL_CHECKS=AUDIT"
working-directory: bootstrap
- name: cache save
uses: actions/cache/save@v4
if: always()
with:
path: ${{ env.CCACHE_DIR }}
key: ubuntu-24.04-ccache-${{github.ref}}-${{github.sha}}
- name: test
id: test
run: |
# Set core file size limit to unlimited
ulimit -c unlimited
ctest -j$(nproc) --output-on-failure
working-directory: build
- 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@v4
if: ${{ failure() && env.CORES_EXIST == 'true' }}
with:
name: ubuntu-coredumps
path: /var/lib/apport/coredump/
- uses: actions/upload-artifact@v4
if: ${{ failure() && env.CORES_EXIST == 'true' }}
with:
name: ubuntu-binaries
path: build/bin
ubuntu_22_04_clang:
name: "ubuntu-22.04-clang"
runs-on: ubuntu-22.04
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_ELASTICSEARCH=ON
-DENABLE_ENCRYPT_CONFIG=ON
-DENABLE_EXPRESSION_LANGUAGE=ON
-DENABLE_EXECUTE_PROCESS=ON
-DENABLE_GCP=ON
-DENABLE_GRAFANA_LOKI=ON
-DENABLE_KUBERNETES=ON
-DENABLE_LIBARCHIVE=ON
-DENABLE_LIBRDKAFKA=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
steps:
- id: checkout
uses: actions/checkout@v4
- name: cache restore
uses: actions/cache/restore@v4
with:
path: ${{ env.CCACHE_DIR }}
key: ubuntu-22.04-all-clang-ccache-${{github.ref}}-${{github.sha}}
restore-keys: |
ubuntu-22.04-all-clang-ccache-${{github.ref}}-
ubuntu-22.04-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 main" | sudo tee -a /etc/apt/sources.list
echo "deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy main" | sudo tee -a /etc/apt/sources.list
echo "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main" | sudo tee -a /etc/apt/sources.list
echo "deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main" | sudo tee -a /etc/apt/sources.list
sudo apt update
sudo apt install -y ccache libfl-dev clang-16 clang-tidy-16 libc++-16-dev libc++abi-16-dev libc++1-16 libc++abi1-16 libunwind-16 libsqliteodbc flake8 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-16
export CXX=clang++-16
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@v4
if: always()
with:
path: ${{ env.CCACHE_DIR }}
key: ubuntu-22.04-all-clang-ccache-${{github.ref}}-${{github.sha}}
- name: test
id: test
run: |
# Set core file size limit to unlimited
ulimit -c unlimited
ctest -j$(nproc) --output-on-failure
working-directory: build
- name: linter
run: cmake --build . --target linter
working-directory: ./build
- name: shellcheck
run: cmake --build . --target shellcheck
working-directory: ./build
- id: flake8_check
run: cmake --build . --target flake8
working-directory: ./build
- id: files
uses: Ana06/get-changed-files@v2.3.0
continue-on-error: true
- name: clang-tidy
run: |
if [[ -n "${{ steps.files.outputs.all }}" ]]; then
FILES="${{ steps.files.outputs.all }}"
else
git fetch origin main && git checkout -b main origin/main || true
FILES=$(git diff --name-only main ${{ github.sha }} --)
git checkout ${{ github.sha }}
fi
# https://stackoverflow.com/questions/58466701/clang-tidy-cant-locate-stdlib-headers
sed -i -e 's/\/usr\/lib\/ccache\/clang++-16/\/lib\/llvm-16\/bin\/clang++/g' build/compile_commands.json
sed -i -e 's/\/usr\/lib\/ccache\/clang-16/\/lib\/llvm-16\/bin\/clang/g' build/compile_commands.json
sed -i -e 's/\/usr\/lib\/ccache\/c++/\/lib\/llvm-16\/bin\/clang++/g' build/compile_commands.json
sed -i -e 's/\/usr\/lib\/ccache\/cc/\/lib\/llvm-16\/bin\/clang/g' build/compile_commands.json
parallel -j$(( $(nproc) + 1 )) ./run_clang_tidy.sh ::: ${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@v4
if: ${{ failure() && env.CORES_EXIST == 'true' }}
with:
name: ubuntu-clang-coredumps
path: /var/lib/apport/coredump/
- uses: actions/upload-artifact@v4
if: ${{ failure() && env.CORES_EXIST == 'true' }}
with:
name: ubuntu-clang-binaries
path: build/bin
rocky:
name: "rocky"
runs-on: ubuntu-20.04
timeout-minutes: 180
steps:
- id: checkout
uses: actions/checkout@v4
- name: cache restore
uses: actions/cache/restore@v4
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_LIBRDKAFKA=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 -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@v4
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 apacheminificpp:$(docker images | grep apacheminificpp | grep rocky | awk '{print $2}') 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@v4
if: ${{ failure() && env.CORES_EXIST == 'true' }}
with:
name: rocky-crashes
path: /cores
- uses: actions/upload-artifact@v4
if: ${{ failure() && env.CORES_EXIST == 'true' }}
with:
name: rocky-binaries
path: /tmp/bin
docker_build:
name: "Docker build for integration tests"
runs-on: ubuntu-22.04
timeout-minutes: 180
steps:
- id: checkout
uses: actions/checkout@v4
- name: cache restore
uses: actions/cache/restore@v4
with:
path: ${{ env.CCACHE_DIR }}
key: docker-ccache-${{github.ref}}-${{github.sha}}
restore-keys: |
docker-ccache-${{github.ref}}-
docker-ccache-refs/heads/main
- 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@v4
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@v4
with:
name: minifi_docker
path: build/minifi_docker.tar
docker_tests:
name: "Docker integration tests"
needs: docker_build
runs-on: ubuntu-20.04
timeout-minutes: 180
steps:
- id: checkout
uses: actions/checkout@v4
- id: run_cmake
name: Run CMake
run: |
mkdir build
cd build
cmake ${DOCKER_CMAKE_FLAGS} ..
- name: Download artifact
uses: actions/download-artifact@v4
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: test
name: Docker Verify
working-directory: ./build
run: make docker-verify
- name: Test Reporter
if: always()
uses: phoenix-actions/test-reporting@v15
with:
name: Docker integration tests
path: build/behavex_output/behave/*.xml
reporter: java-junit
output-to: 'step-summary'
only-summary: 'true'
list-tests: 'failed'
list-suites: 'failed'
- name: Upload artifact
if: failure()
uses: actions/upload-artifact@v4
with:
name: behavex_output
path: build/behavex_output