image: ghcr.io/rspamd/rspamd-build-docker:fedora-ci
name: fedora-ci
enable_luajit: 'OFF'
+ # rpm/rspamd.spec builds with jemalloc, but the fedora-ci image installs
+ # neither jemalloc nor jemalloc-devel. Flip this on once the image carries
+ # jemalloc-devel (rspamd/rspamd-build-docker).
+ enable_jemalloc: 'OFF'
ubuntu_amd64:
if: |
with:
image: ghcr.io/rspamd/rspamd-build-docker:ubuntu-ci
name: ubuntu-ci-amd64
+ # The shipped configuration: debian/rules enables jemalloc everywhere
+ # except arm64, and the amd64 image carries libjemalloc-dev. This is the
+ # only job that runs the functional suite against it, and the binary it
+ # uploads is what webui-e2e-playwright then exercises.
+ enable_jemalloc: 'ON'
ubuntu_arm64:
if: |
image: ghcr.io/rspamd/rspamd-build-docker:ubuntu-ci
name: ubuntu-ci-arm64
runner: ${{ vars.ARM_RUNNER || 'ubuntu-24.04-arm' }}
+ # Deliberately off: debian/rules also disables jemalloc on arm64, and the
+ # arm64 image takes the vectorscan branch which skips libjemalloc-dev.
+ enable_jemalloc: 'OFF'
ubuntu-focal:
if: |
with:
image: ghcr.io/rspamd/rspamd-build-docker:ubuntu-focal
name: ubuntu-focal
+ # amd64 runner, and the focal image carries libjemalloc-dev; this covers
+ # the jemalloc build on the gcc-10 floor.
+ enable_jemalloc: 'ON'
centos-8:
if: |
with:
image: ghcr.io/rspamd/rspamd-build-docker:centos-8
name: centos-8
+ # rpm/rspamd.spec builds with jemalloc, but the image installs only the
+ # runtime `jemalloc`, not `jemalloc-devel`. Flip on once the image has it.
+ enable_jemalloc: 'OFF'
centos-9:
if: |
with:
image: ghcr.io/rspamd/rspamd-build-docker:centos-9
name: centos-9
+ # As centos-8: image has runtime `jemalloc` only, no `jemalloc-devel`.
+ enable_jemalloc: 'OFF'
webui-e2e-playwright:
needs: ubuntu_amd64
enable_luajit:
type: string
default: 'ON'
+ # rspamd ships jemalloc-enabled packages (debian/rules on everything but
+ # arm64, rpm/rspamd.spec everywhere), and jemalloc changes how the whole
+ # process allocates, so that configuration has to be built and tested and
+ # not just assumed to work. Opt-in rather than default-on because only the
+ # amd64 ubuntu images carry libjemalloc-dev; see the per-job comments in
+ # ci.yml for who is still missing it.
+ enable_jemalloc:
+ type: string
+ default: 'OFF'
env:
CTEST_OUTPUT_ON_FAILURE: 1
run: |
mkdir ${GITHUB_WORKSPACE}/build
cd ${GITHUB_WORKSPACE}/build
- cmake -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_COVERAGE=ON -DENABLE_LIBUNWIND=ON -DENABLE_HYPERSCAN=ON -DENABLE_LUAJIT=${{ inputs.enable_luajit }} ${{ env.HYPERSCAN_ALTROOT }} -GNinja ${GITHUB_WORKSPACE}/src
+ cmake -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_COVERAGE=ON -DENABLE_LIBUNWIND=ON -DENABLE_HYPERSCAN=ON -DENABLE_LUAJIT=${{ inputs.enable_luajit }} -DENABLE_JEMALLOC=${{ inputs.enable_jemalloc }} ${{ env.HYPERSCAN_ALTROOT }} -GNinja ${GITHUB_WORKSPACE}/src
- name: Build rspamd
run: |
name:
required: true
type: string
+ # See the matching input in ci_rspamd.yml: the shipped packages enable
+ # jemalloc, so at least one job has to build with it.
+ enable_jemalloc:
+ type: string
+ default: 'OFF'
jobs:
test:
run: |
mkdir ${GITHUB_WORKSPACE}/build
cd ${GITHUB_WORKSPACE}/build
- if [[ -f /opt/rh/gcc-toolset-10/enable ]] ; then source /opt/rh/gcc-toolset-10/enable ; fi
- cmake -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_COVERAGE=ON -DENABLE_LIBUNWIND=ON -DENABLE_LUAJIT=ON -DLUA_ROOT=/luajit-build -DENABLE_HYPERSCAN=ON ${{ env.HYPERSCAN_ALTROOT }} ${GITHUB_WORKSPACE}/src
+ if [[ -f /opt/rh/gcc-toolset-10/enable ]] ; then source /opt/rh/gcc-toolset-10/enable ; fi
+ cmake -DCMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/install -DCMAKE_RULE_MESSAGES=OFF -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_COVERAGE=ON -DENABLE_LIBUNWIND=ON -DENABLE_LUAJIT=ON -DLUA_ROOT=/luajit-build -DENABLE_HYPERSCAN=ON -DENABLE_JEMALLOC=${{ inputs.enable_jemalloc }} ${{ env.HYPERSCAN_ALTROOT }} ${GITHUB_WORKSPACE}/src
- name: Build rspamd
run: |
- if [[ -f /opt/rh/gcc-toolset-10/enable ]] ; then source /opt/rh/gcc-toolset-10/enable ; fi
+ if [[ -f /opt/rh/gcc-toolset-10/enable ]] ; then source /opt/rh/gcc-toolset-10/enable ; fi
cd ${GITHUB_WORKSPACE}/build
ncpu=$(getconf _NPROCESSORS_ONLN)
make -j $ncpu install