# Copyright (c) 2020-now by the Zeek Project. See LICENSE for details. environment: CCACHE_BASEDIR: $CIRRUS_WORKING_DIR # Enforce sequential JIT'ing of files for controlled memory usage. HILTI_JIT_SEQUENTIAL: 1 # Images for macOS. Currently Cirrus supports only macos Sonoma and would # automatically and silently upgrade any other macos image (e.g., historic # ones) to Sonoma. IMAGE_MACOS_SONOMA: ghcr.io/cirruslabs/macos-runner:sonoma # Branches to use for spicy-plugin and spicy-analyzers tests. ZEEK_SPICY_BRANCH: main ZEEK_ANALYZERS_BRANCH: main # Cache HILTI C++ compilation. HILTI_CXX_COMPILER_LAUNCHER: ccache CCACHE_COMPRESS: "1" CCACHE_MAXSIZE: "2G" lint_task: skip: $CIRRUS_PR == '' container: dockerfile: ci/Dockerfile cpu: 4 memory: 12G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache LD_LIBRARY_PATH: /usr/lib/llvm-19/lib/clang/19/lib/linux/ update_git_script: - git submodule update --recursive --init configure_script: ./ci/run-ci -b build configure debug --cxx-compiler clang++-19 --clang-tidy `which clang-tidy-19` build_script: ./ci/run-ci -b build build test_code_script: ./ci/run-ci -b build test-code on_failure: ci_artifacts: path: artifacts junit_artifacts: path: artifacts/diag.xml type: text/xml format: junit clang_artifacts: path: build/ci clang19_ubuntu_debug_task: container: dockerfile: ci/Dockerfile cpu: 4 memory: 12G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache LD_LIBRARY_PATH: /usr/lib/llvm-19/lib/clang/19/lib/linux/ update_git_script: - git submodule update --recursive --init configure_script: ./ci/run-ci -b build configure debug --cxx-compiler clang++-19 build_script: ./ci/run-ci -b build build test_build_script: ./ci/run-ci -b build test-build install_script: ./ci/run-ci -b build install packaging_script: - ninja -C build package packages_artifacts: path: build/spicy*.tar.gz type: application/gzip on_failure: ci_artifacts: path: artifacts junit_artifacts: path: artifacts/diag.xml type: text/xml format: junit clang_artifacts: path: build/ci clang19_lts_ubuntu_release_task: container: dockerfile: ci/Dockerfile cpu: 4 memory: 8G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache update_git_script: - git submodule update --recursive --init configure_script: ./ci/run-ci -b build configure release --cxx-compiler clang++-19 build_script: ./ci/run-ci -b build build test_build_script: ./ci/run-ci -b build test-build install_script: ./ci/run-ci -b build install cleanup_script: ./ci/run-ci -b build cleanup test_install_script: ./ci/run-ci -b build test-install packaging_script: - ninja -C build package packages_artifacts: path: build/spicy*.tar.gz type: application/gzip on_failure: ci_artifacts: path: artifacts junit_artifacts: path: artifacts/diag.xml type: text/xml format: junit clang19_lts_ubuntu_release_static_task: container: dockerfile: ci/Dockerfile cpu: 4 memory: 8G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache update_git_script: - git submodule update --recursive --init configure_script: ./ci/run-ci -b build configure release --cxx-compiler clang++-19 build_script: ./ci/run-ci -b build build install_script: ./ci/run-ci -b build install cleanup_script: ./ci/run-ci -b build cleanup test_install_script: ./ci/run-ci -b build test-install on_failure: ci_artifacts: path: artifacts junit_artifacts: path: artifacts/diag.xml type: text/xml format: junit no_toolchain_task: container: dockerfile: ci/Dockerfile cpu: 4 memory: 12G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache update_git_script: - git submodule update --recursive --init configure_script: ./ci/run-ci -b build configure release --build-toolchain no build_script: ./ci/run-ci -b build build install_script: ./ci/run-ci -b build install packaging_script: - ninja -C build package packages_artifacts: path: build/spicy*.tar.gz type: application/gzip on_failure: ci_artifacts: path: artifacts junit_artifacts: path: artifacts/diag.xml type: text/xml format: junit validate_release_tarball_task: skip: $CIRRUS_BRANCH != 'main' && $CIRRUS_TAG == '' container: dockerfile: ci/Dockerfile cpu: 4 memory: 12G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache update_git_script: - git submodule update --recursive --init create_tarball_script: - scripts/make-tarball.sh unpack_script: - mkdir /tmp/spicy-tarball - tar xf spicy*.tar.gz -C /tmp/spicy-tarball configure_script: - cd /tmp/spicy-tarball/spicy-* - ./configure --generator=Ninja --enable-ccache --prefix=/opt/spicy --enable-werror --with-hilti-compiler-launcher=ccache build_script: - cd /tmp/spicy-tarball/spicy-* - ninja -j3 -C build test_build_script: - cd /tmp/spicy-tarball/spicy-* - make -C tests sonoma_task: skip: $CIRRUS_BRANCH != 'main' && $CIRRUS_TAG == '' macos_instance: image: $IMAGE_MACOS_SONOMA timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache update_git_script: - git submodule update --recursive --init install_dependencies_script: - brew install bison cmake flex ninja ccache - python3 -mvenv /tmp/btest.venv && /tmp/btest.venv/bin/pip install btest configure_script: - ./configure --with-flex=$(brew --prefix flex) --with-bison=$(brew --prefix bison) --generator=Ninja --enable-ccache --build-type=Debug build_script: - ninja -C build test_script: - (source /tmp/btest.venv/bin/activate && btest -djc tests/btest.cfg) homebrew_sonoma_task: skip: $CIRRUS_BRANCH != 'main' && $CIRRUS_TAG == '' macos_instance: image: $IMAGE_MACOS_SONOMA script: - brew tap zeek/zeek - brew install spicy --HEAD - brew test spicy docker_alpine_3_18_task: container: dockerfile: docker/Dockerfile.alpine-3.18 cpu: 4 memory: 14G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache update_git_script: - git submodule update --recursive --init configure_script: - LDFLAGS="-lucontext" ./configure --generator=Ninja --enable-ccache --prefix=/opt/spicy --enable-werror build_script: - ninja -j4 -C build install test_install_script: - SPICY_INSTALLATION_DIRECTORY=/opt/spicy make -C tests test-install packaging_script: - ninja -C build package packages_artifacts: path: build/spicy*.tar.gz type: application/gzip docker_centos_stream_9_task: container: dockerfile: docker/Dockerfile.centos-stream-9 cpu: 4 memory: 14G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache update_git_script: - git submodule update --recursive --init configure_script: - ./configure --generator=Ninja --enable-ccache --prefix=/opt/spicy --enable-werror build_script: - ninja -j4 -C build check all package - cp build/spicy*.rpm . - rpm -i ./spicy*.rpm - rm -rf build test_install_script: - SPICY_INSTALLATION_DIRECTORY=/opt/spicy make -C tests test-install packages_artifacts: path: ./spicy*.{deb,rpm} type: application/gzip docker_debian11_task: container: dockerfile: docker/Dockerfile.debian-11 cpu: 4 memory: 12G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache update_git_script: - git submodule update --recursive --init configure_script: - ./configure --generator=Ninja --enable-ccache --prefix=/opt/spicy --enable-werror build_script: - ninja -j4 -C build check all package - cp build/spicy*.deb . - dpkg --install ./spicy*.deb - rm -rf build test_install_script: - SPICY_INSTALLATION_DIRECTORY=/opt/spicy make -C tests test-install packages_artifacts: path: ./spicy*.{deb,rpm} type: application/gzip docker_debian12_task: container: dockerfile: docker/Dockerfile.debian-12 cpu: 4 memory: 12G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache update_git_script: - git submodule update --recursive --init configure_script: - ./configure --generator=Ninja --enable-ccache --prefix=/opt/spicy --enable-werror build_script: - ninja -j4 -C build check all package - cp build/spicy*.deb . - dpkg --install ./spicy*.deb - rm -rf build test_install_script: - SPICY_INSTALLATION_DIRECTORY=/opt/spicy make -C tests test-install packages_artifacts: path: ./spicy*.{deb,rpm} type: application/gzip docker_ubuntu22_task: skip: $CIRRUS_BRANCH != 'main' && $CIRRUS_TAG == '' container: dockerfile: docker/Dockerfile.ubuntu-22 cpu: 4 memory: 12G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache CCACHE_COMPRESS: 1 update_git_script: - git submodule update --recursive --init configure_script: - ./configure --generator=Ninja --enable-ccache --prefix=/opt/spicy --enable-werror build_script: - ninja -j4 -C build check all package - cp build/spicy*.deb . - dpkg --install ./spicy*.deb - rm -rf build test_install_script: - SPICY_INSTALLATION_DIRECTORY=/opt/spicy make -C tests test-install packages_artifacts: path: ./spicy*.{deb,rpm} type: application/gzip docker_ubuntu24_task: skip: $CIRRUS_BRANCH != 'main' && $CIRRUS_TAG == '' container: dockerfile: docker/Dockerfile.ubuntu-24 cpu: 4 memory: 12G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache CCACHE_COMPRESS: 1 update_git_script: - git submodule update --recursive --init configure_script: - ./configure --generator=Ninja --enable-ccache --prefix=/opt/spicy --enable-werror build_script: - ninja -j4 -C build check all package - cp build/spicy*.deb . - dpkg --install ./spicy*.deb - rm -rf build test_install_script: - SPICY_INSTALLATION_DIRECTORY=/opt/spicy make -C tests test-install packages_artifacts: path: ./spicy*.{deb,rpm} type: application/gzip docker_fedora40_task: skip: $CIRRUS_BRANCH != 'main' && $CIRRUS_TAG == '' container: dockerfile: docker/Dockerfile.fedora-40 cpu: 4 memory: 12G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache CCACHE_COMPRESS: 1 update_git_script: - git submodule update --recursive --init configure_script: - ./configure --generator=Ninja --enable-ccache --prefix=/opt/spicy --enable-werror build_script: - ninja -j4 -C build check all package - cp build/spicy*.rpm . - rpm -i ./spicy*.rpm - rm -rf build test_install_script: - SPICY_INSTALLATION_DIRECTORY=/opt/spicy make -C tests test-install packages_artifacts: path: ./spicy*.{deb,rpm} type: application/gzip docker_fedora41_task: skip: $CIRRUS_BRANCH != 'main' && $CIRRUS_TAG == '' container: dockerfile: docker/Dockerfile.fedora-41 cpu: 4 memory: 12G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache CCACHE_COMPRESS: 1 update_git_script: - git submodule update --recursive --init configure_script: - ./configure --generator=Ninja --enable-ccache --prefix=/opt/spicy --enable-werror build_script: - ninja -j4 -C build check all package - cp build/spicy*.rpm . - rpm -i ./spicy*.rpm - rm -rf build test_install_script: - SPICY_INSTALLATION_DIRECTORY=/opt/spicy make -C tests test-install packages_artifacts: path: ./spicy*.{deb,rpm} type: application/gzip docker_opensuse15_6_task: skip: $CIRRUS_BRANCH != 'main' && $CIRRUS_TAG == '' container: dockerfile: docker/Dockerfile.opensuse-15.6 cpu: 4 memory: 12G timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache CCACHE_COMPRESS: 1 update_git_script: - git submodule update --recursive --init configure_script: - ./configure --generator=Ninja --enable-ccache --prefix=/opt/spicy --enable-werror build_script: - ninja -j4 -C build check all package - cp build/spicy*.rpm . - rpm -i ./spicy*.rpm - rm -rf build test_install_script: - SPICY_INSTALLATION_DIRECTORY=/opt/spicy make -C tests test-install packages_artifacts: path: ./spicy*.{deb,rpm} type: application/gzip freebsd13_task: skip: $CIRRUS_BRANCH != 'main' && $CIRRUS_TAG == '' freebsd_instance: image_family: freebsd-13-4 cpu: 8 memory: 8GB prepare_script: ./ci/prepare_freebsd.sh timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache CCACHE_COMPRESS: 1 update_git_script: - git submodule update --recursive --init configure_script: - ./configure --generator=Ninja --enable-ccache --prefix=/opt/spicy --with-flex=/usr/local --with-bison=/usr/local --enable-werror build_script: - ninja -j4 -C build install test_install_script: - SPICY_INSTALLATION_DIRECTORY=/opt/spicy make -C tests test packaging_script: - ninja -C build package packages_artifacts: path: build/spicy*.tar.gz type: application/gzip freebsd14_task: freebsd_instance: image_family: freebsd-14-2 cpu: 8 memory: 8GB prepare_script: ./ci/prepare_freebsd.sh timeout_in: 120m always: ccache_cache: folder: /tmp/ccache fingerprint_script: echo $CIRRUS_TASK_NAME-$CIRRUS_OS reupload_on_changes: true env: CCACHE_DIR: /tmp/ccache CCACHE_COMPRESS: 1 update_git_script: - git submodule update --recursive --init configure_script: - ./configure --generator=Ninja --enable-ccache --prefix=/opt/spicy --with-flex=/usr/local --with-bison=/usr/local --enable-werror build_script: - ninja -j4 -C build install test_install_script: - SPICY_INSTALLATION_DIRECTORY=/opt/spicy make -C tests test packaging_script: - ninja -C build package packages_artifacts: path: build/spicy*.tar.gz type: application/gzip