+++ /dev/null
-name: alpine/musl
-
-on:
- push:
-
-permissions:
- contents: read
-
-jobs:
- 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
if [ "$failed" = true ]; then
exit 1;
fi
+ Test-musl:
+ name: Alpine+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