add option to use libbacktrace for backtraces in crash reports #10986
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| paths-ignore: | |
| - '**/*.md' | |
| - '**/00-RELEASENOTES' | |
| - '**/COPYING' | |
| pull_request: | |
| paths-ignore: | |
| - '**/*.md' | |
| - '**/00-RELEASENOTES' | |
| - '**/COPYING' | |
| concurrency: | |
| group: ci-${{ github.head_ref || github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| test-ubuntu-latest: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| - name: make | |
| # Fail build if there are warnings | |
| # build with TLS just for compilation coverage | |
| run: | | |
| git clone https://github.com/ianlancetaylor/libbacktrace.git /tmp/libbacktrace | |
| cd /tmp/libbacktrace && ./configure && make && sudo make install | |
| cd $GITHUB_WORKSPACE | |
| make -j4 all-with-unit-tests SERVER_CFLAGS='-Werror' BUILD_TLS=yes USE_FAST_FLOAT=yes USE_LIBBACKTRACE=yes | |
| - name: test | |
| run: | | |
| sudo apt-get install tcl8.6 tclx | |
| ./runtest --verbose --tags -slow --dump-logs | |
| - name: module api test | |
| run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs | |
| - name: validate commands.def up to date | |
| run: | | |
| touch src/commands/ping.json | |
| make commands.def | |
| dirty="$(git diff)" | |
| if [[ ! -z "$dirty" ]]; then echo "$dirty"; exit 1; fi | |
| - name: unit tests | |
| run: | | |
| ./src/valkey-unit-tests | |
| test-ubuntu-latest-compatibility: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| server: | |
| - {version: "7.2.11", file: "valkey-7.2.11-noble-x86_64.tar.gz"} | |
| - {version: "8.0.6", file: "valkey-8.0.6-noble-x86_64.tar.gz"} | |
| - {version: "8.1.4", file: "valkey-8.1.4-noble-x86_64.tar.gz"} | |
| steps: | |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| - name: make | |
| # Fail build if there are warnings | |
| # build with TLS just for compilation coverage | |
| run: | | |
| git clone https://github.com/ianlancetaylor/libbacktrace.git /tmp/libbacktrace | |
| cd /tmp/libbacktrace && ./configure && make && sudo make install | |
| cd $GITHUB_WORKSPACE | |
| make -j4 all-with-unit-tests SERVER_CFLAGS='-Werror' BUILD_TLS=yes USE_FAST_FLOAT=yes USE_LIBBACKTRACE=yes | |
| - name: Install old server (${{ matrix.server.version }}) for compatibility testing | |
| run: | | |
| mkdir -p tests/tmp | |
| cd tests/tmp | |
| wget https://download.valkey.io/releases/${{ matrix.server.file }} | |
| tar -xvf ${{ matrix.server.file }} | |
| - name: Run compatibility tests against ${{ matrix.server.version }} | |
| run: | | |
| sudo apt-get install -y tcl8.6 tclx | |
| ./runtest --verbose --tags "-slow needs:other-server" --dump-logs \ | |
| --other-server-path tests/tmp/valkey-${{ matrix.server.version }}-noble-x86_64/bin/valkey-server | |
| - name: Module API tests against ${{ matrix.server.version }} | |
| run: | | |
| CFLAGS='-Werror' ./runtest-moduleapi --tags needs:other-server --verbose --dump-logs \ | |
| --other-server-path tests/tmp/valkey-${{ matrix.server.version }}-noble-x86_64/bin/valkey-server | |
| test-ubuntu-latest-cmake: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| - name: cmake and make | |
| run: | | |
| sudo apt-get install -y cmake libssl-dev | |
| mkdir -p build-release | |
| cd build-release | |
| cmake -DCMAKE_BUILD_TYPE=Release .. -DBUILD_TLS=yes -DBUILD_UNIT_TESTS=yes | |
| make -j$(nproc) | |
| - name: test | |
| run: | | |
| sudo apt-get install -y tcl8.6 tclx | |
| ln -sf $(pwd)/build-release/bin/valkey-server $(pwd)/src/valkey-server | |
| ln -sf $(pwd)/build-release/bin/valkey-cli $(pwd)/src/valkey-cli | |
| ln -sf $(pwd)/build-release/bin/valkey-benchmark $(pwd)/src/valkey-benchmark | |
| ln -sf $(pwd)/build-release/bin/valkey-server $(pwd)/src/valkey-check-aof | |
| ln -sf $(pwd)/build-release/bin/valkey-server $(pwd)/src/valkey-check-rdb | |
| ln -sf $(pwd)/build-release/bin/valkey-server $(pwd)/src/valkey-sentinel | |
| ./runtest --verbose --tags -slow --dump-logs | |
| - name: unit tests | |
| run: | | |
| ./build-release/bin/valkey-unit-tests | |
| test-sanitizer-address: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| - name: make | |
| # build with TLS module just for compilation coverage | |
| run: | | |
| git clone https://github.com/ianlancetaylor/libbacktrace.git /tmp/libbacktrace | |
| cd /tmp/libbacktrace && ./configure && make && sudo make install | |
| cd $GITHUB_WORKSPACE | |
| make -j4 all-with-unit-tests SANITIZER=address SERVER_CFLAGS='-Werror' BUILD_TLS=module USE_LIBBACKTRACE=yes | |
| - name: testprep | |
| run: sudo apt-get install tcl8.6 tclx -y | |
| - name: test | |
| run: ./runtest --verbose --tags -slow --dump-logs | |
| - name: module api test | |
| run: CFLAGS='-Werror' ./runtest-moduleapi --verbose --dump-logs | |
| - name: unit tests | |
| run: ./src/valkey-unit-tests | |
| test-rdma: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| - name: prepare-development-libraries | |
| run: | | |
| sudo apt-get install librdmacm-dev libibverbs-dev | |
| git clone https://github.com/ianlancetaylor/libbacktrace.git /tmp/libbacktrace | |
| cd /tmp/libbacktrace && ./configure && make && sudo make install | |
| cd $GITHUB_WORKSPACE | |
| - name: make-rdma-module | |
| run: make -j4 BUILD_RDMA=module USE_LIBBACKTRACE=yes | |
| - name: make-rdma-builtin | |
| run: | | |
| make distclean | |
| make -j4 BUILD_RDMA=yes USE_LIBBACKTRACE=yes | |
| - name: clone-rxe-kmod | |
| run: | | |
| mkdir -p tests/rdma/rxe | |
| git clone https://github.com/pizhenwei/rxe.git tests/rdma/rxe | |
| make -C tests/rdma/rxe | |
| - name: clear-kernel-log | |
| run: sudo dmesg -c > /dev/null | |
| - name: test | |
| run: sudo ./runtest-rdma --install-rxe | |
| - name: show-kernel-log | |
| run: sudo dmesg -c | |
| build-debian-old: | |
| runs-on: ubuntu-latest | |
| container: debian:bullseye | |
| steps: | |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| - name: make | |
| run: | | |
| apt-get update && apt-get install -y build-essential libbacktrace-dev | |
| make -j4 SERVER_CFLAGS='-Werror' USE_LIBBACKTRACE=yes | |
| build-macos-latest: | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| - name: make | |
| # Build with additional upcoming features | |
| run: | | |
| brew install libbacktrace | |
| make -j3 all-with-unit-tests SERVER_CFLAGS='-Werror' USE_FAST_FLOAT=yes USE_LIBBACKTRACE=yes LIBBACKTRACE_PREFIX=$(brew --prefix libbacktrace) | |
| build-32bit: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| - name: make | |
| # Fast float requires C++ 32-bit libraries to compile on 64-bit ubuntu | |
| # machine i.e. "-cross" suffixed version. Cross-compiling c++ to 32-bit | |
| # also requires multilib support for g++ compiler i.e. "-multilib" | |
| # suffixed version of g++. g++-multilib generally includes libstdc++. | |
| # *cross version as well, but it is also added explicitly just in case. | |
| # libbacktrace needs to be built from source for 32-bit. | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install libc6-dev-i386 libstdc++-11-dev-i386-cross gcc-multilib g++-multilib | |
| git clone https://github.com/ianlancetaylor/libbacktrace.git /tmp/libbacktrace | |
| cd /tmp/libbacktrace && ./configure CFLAGS="-m32" --prefix=/usr/local/libbacktrace32 && make && sudo make install | |
| cd $GITHUB_WORKSPACE | |
| make -j4 SERVER_CFLAGS='-Werror' 32bit USE_FAST_FLOAT=yes USE_LIBBACKTRACE=yes LIBBACKTRACE_PREFIX=/usr/local/libbacktrace32 | |
| - name: unit tests | |
| run: | | |
| ./src/valkey-unit-tests | |
| build-libc-malloc: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| - name: make | |
| run: | | |
| git clone https://github.com/ianlancetaylor/libbacktrace.git /tmp/libbacktrace | |
| cd /tmp/libbacktrace && ./configure && make && sudo make install | |
| cd $GITHUB_WORKSPACE | |
| make -j4 SERVER_CFLAGS='-Werror' MALLOC=libc USE_FAST_FLOAT=yes USE_LIBBACKTRACE=yes | |
| build-almalinux8-jemalloc: | |
| runs-on: ubuntu-latest | |
| container: almalinux:8 | |
| steps: | |
| - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| - name: make | |
| run: | | |
| dnf -y install epel-release gcc gcc-c++ make procps-ng which libbacktrace-devel | |
| make -j4 SERVER_CFLAGS='-Werror' USE_FAST_FLOAT=yes USE_LIBBACKTRACE=yes | |
| format-yaml: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| - name: Set up Go | |
| uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 | |
| with: | |
| go-version: "1.22.4" | |
| - name: Setup YAML formatter | |
| run: | | |
| go install github.com/google/yamlfmt/cmd/yamlfmt@latest | |
| - name: Run yamlfmt | |
| id: yamlfmt | |
| run: | | |
| yamlfmt -lint -conf .config/format.yml . | |
| # Capture the diff output | |
| DIFF=$(git diff) | |
| if [ ! -z "$DIFF" ]; then | |
| # Encode the diff in Base64 to ensure it's handled as a single line | |
| ENCODED_DIFF=$(echo "$DIFF" | base64 -w 0) | |
| echo "diff=$ENCODED_DIFF" >> $GITHUB_OUTPUT | |
| fi | |
| shell: bash | |
| - name: Check for formatting changes | |
| if: ${{ steps.yamlfmt.outputs.diff }} | |
| run: | | |
| echo "ERROR: YAML file is not formatted properly. Here is the diff: " | |
| # Decode the Base64 diff to display it | |
| echo "${{ steps.clang-format.outputs.diff }}" | base64 --decode | |
| exit 1 | |
| shell: bash |