From 76d1dbfb61dd68283f89e52866ea11c3b24e0ba9 Mon Sep 17 00:00:00 2001 From: Tim Duesterhus Date: Mon, 13 Apr 2026 21:23:40 +0200 Subject: [PATCH] CI: Sync musl.yml with vtest.yml This syncs up musl.yml with vtest.yml as much as possible by: - Aligning indentation. - Reordering steps. - Aligning step names. - Adding missing functionality to musl.yml. --- .github/workflows/musl.yml | 164 +++++++++++++++++++++++-------------- 1 file changed, 102 insertions(+), 62 deletions(-) diff --git a/.github/workflows/musl.yml b/.github/workflows/musl.yml index 86fabe575..4220e6fcf 100644 --- a/.github/workflows/musl.yml +++ b/.github/workflows/musl.yml @@ -7,65 +7,105 @@ 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: | - echo '/tmp/core/core.%h.%e.%t' > /proc/sys/kernel/core_pattern - - uses: actions/checkout@v6 - - 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 jose - - uses: ./.github/actions/setup-vtest - - name: Build - run: make -j$(nproc) TARGET=linux-musl DEBUG="-DDEBUG_POOL_INTEGRITY -DDEBUG_UNIT" 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: Run VTest - id: vtest - run: make reg-tests VTEST_PROGRAM=${{ github.workspace }}/vtest/vtest REGTESTS_TYPES=default,bug,devel - - name: Run Unit tests - id: unittests - run: | - make unit-tests - - 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 - - name: Show Unit-Tests results - if: ${{ failure() && steps.unittests.outcome == 'failure' }} - run: | - for result in ${TMPDIR:-/tmp}/ha-unittests-*/results/res.*; do - printf "::group::" - cat $result - echo "::endgroup::" - done - exit 1 - + Test: + name: musl, ${{ matrix.name }} + runs-on: ubuntu-latest + strategy: + matrix: + include: + - name: gcc + CC: gcc + FLAGS: + - ARCH_FLAGS='-ggdb3' + - 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 + fail-fast: false + container: + image: alpine:latest + options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined + volumes: + - /tmp/core:/tmp/core + steps: + - name: Setup coredumps + run: | + echo '/tmp/core/core.%h.%e.%t' > /proc/sys/kernel/core_pattern + - uses: actions/checkout@v6 + - 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 jose + - uses: ./.github/actions/setup-vtest + - name: Compile HAProxy with ${{ matrix.CC }} + run: | + echo "::group::Show compiler's version" + echo | ${{ matrix.CC }} -v + echo "::endgroup::" + echo "::group::Show platform specific defines" + echo | ${{ matrix.CC }} -dM -xc -E - + echo "::endgroup::" + make -j$(nproc) all \ + ERR=1 \ + TARGET=linux-musl \ + CC=${{ matrix.CC }} \ + DEBUG="-DDEBUG_POOL_INTEGRITY -DDEBUG_UNIT" \ + ${{ join(matrix.FLAGS, ' ') }} \ + ADDLIB="-Wl,-rpath,/usr/local/lib/ -Wl,-rpath,$HOME/opt/lib/" + make install-bin + - name: Show HAProxy version + id: show-version + run: | + echo "::group::Show dynamic libraries." + if command -v ldd > /dev/null; then + # Linux + ldd $(which haproxy) + else + # macOS + otool -L $(which haproxy) + fi + echo "::endgroup::" + haproxy -vv + echo "version=$(haproxy -vq)" >> $GITHUB_OUTPUT + - name: Run VTest for HAProxy ${{ steps.show-version.outputs.version }} + id: vtest + run: | + make reg-tests VTEST_PROGRAM=${{ github.workspace }}/vtest/vtest REGTESTS_TYPES=default,bug,devel + - name: Show VTest results + if: ${{ failure() && steps.vtest.outcome == 'failure' }} + run: | + for folder in ${TMPDIR:-/tmp}/haregtests-*/vtc.*; do + printf "::group::" + cat $folder/INFO + cat $folder/LOG + echo "::endgroup::" + done + exit 1 + - name: Run Unit tests + id: unittests + run: | + make unit-tests + - name: Show Unit-Tests results + if: ${{ failure() && steps.unittests.outcome == 'failure' }} + run: | + for result in ${TMPDIR:-/tmp}/ha-unittests-*/results/res.*; do + printf "::group::" + cat $result + echo "::endgroup::" + done + exit 1 + - 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