name: alpine/musl on: push: permissions: contents: read jobs: musl: name: gcc runs-on: ubuntu-latest container: image: alpine:latest options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined volumes: - /tmp/core:/tmp/core steps: - name: Setup coredumps run: | ulimit -c unlimited echo '/tmp/core/core.%h.%e.%t' > /proc/sys/kernel/core_pattern - uses: actions/checkout@v4 - name: Install dependencies run: apk add gcc gdb make tar git python3 libc-dev linux-headers pcre-dev pcre2-dev openssl-dev lua5.3-dev grep socat curl musl-dbg lua5.3-dbg - name: Install VTest run: scripts/build-vtest.sh - name: Build run: make -j$(nproc) TARGET=linux-musl ARCH_FLAGS='-ggdb3' CC=cc V=1 USE_LUA=1 LUA_INC=/usr/include/lua5.3 LUA_LIB=/usr/lib/lua5.3 USE_OPENSSL=1 USE_PCRE2=1 USE_PCRE2_JIT=1 USE_PROMEX=1 - name: Show version run: ./haproxy -vv - name: Show linked libraries run: ldd haproxy - name: Install problem matcher for VTest # This allows one to more easily see which tests fail. run: echo "::add-matcher::.github/vtest.json" - name: Run VTest id: vtest run: make reg-tests VTEST_PROGRAM=../vtest/vtest REGTESTS_TYPES=default,bug,devel - name: Show coredumps if: ${{ failure() && steps.vtest.outcome == 'failure' }} run: | failed=false ls /tmp/core/ for file in /tmp/core/core.*; do failed=true printf "::group::" gdb -ex 'thread apply all bt full' ./haproxy $file echo "::endgroup::" done if [ "$failed" = true ]; then exit 1; fi - name: Show results if: ${{ failure() }} run: | for folder in /tmp/haregtests-*/vtc.*; do printf "::group::" cat $folder/INFO cat $folder/LOG echo "::endgroup::" done