name: Fedora/Rawhide/OpenSSL on: schedule: - cron: "0 0 25 * *" workflow_dispatch: permissions: contents: read jobs: build_and_test: strategy: matrix: platform: [ { name: x64, cc: gcc, ADDLIB_ATOMIC: "", ARCH_FLAGS: "" }, { name: x64, cc: clang, ADDLIB_ATOMIC: "", ARCH_FLAGS: "" }, { name: x86, cc: gcc, ADDLIB_ATOMIC: "-latomic", ARCH_FLAGS: "-m32" }, { name: x86, cc: clang, ADDLIB_ATOMIC: "-latomic", ARCH_FLAGS: "-m32" } ] fail-fast: false name: ${{ matrix.platform.cc }}.${{ matrix.platform.name }} runs-on: ubuntu-latest if: ${{ github.repository_owner == 'haproxy' || github.event_name == 'workflow_dispatch' }} container: image: fedora:rawhide options: --privileged steps: - uses: actions/checkout@v6 - name: Install dependencies run: | dnf -y install awk diffutils git zlib-devel pcre2-devel 'perl(FindBin)' perl-IPC-Cmd 'perl(File::Copy)' 'perl(File::Compare)' lua-devel socat findutils systemd-devel clang openssl-devel.x86_64 procps-ng dnf -y install 'perl(FindBin)' 'perl(File::Compare)' perl-IPC-Cmd 'perl(File::Copy)' glibc-devel.i686 lua-devel.i686 lua-devel.x86_64 systemd-devel.i686 zlib-ng-compat-devel.i686 libatomic.i686 openssl-devel.i686 pcre2-devel.i686 - uses: ./.github/actions/setup-vtest - name: Compile HAProxy with ${{ matrix.platform.cc }} run: | make -j3 CC=${{ matrix.platform.cc }} V=1 ERR=1 TARGET=linux-glibc DEBUG="-DDEBUG_POOL_INTEGRITY -DDEBUG_UNIT" USE_PROMEX=1 USE_OPENSSL=1 USE_QUIC=1 USE_ZLIB=1 USE_PCRE2=1 USE_PCRE2_JIT=1 USE_LUA=1 ADDLIB="${{ matrix.platform.ADDLIB_ATOMIC }}" ARCH_FLAGS="${{ matrix.platform.ARCH_FLAGS }}" make install - name: Show HAProxy version id: show-version run: | echo "::group::Show dynamic libraries." ldd $(command -v haproxy) echo "::endgroup::" haproxy -vv echo "version=$(haproxy -vq)" >> $GITHUB_OUTPUT # # TODO: review this workaround later - name: relax crypto policies run: | dnf -y install crypto-policies-scripts echo LEGACY > /etc/crypto-policies/config update-crypto-policies - 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 - name: Run Unit tests id: unittests run: | make unit-tests