Files
Nikita Fomichev 6ddc2f3f22 Move the SQLancer++ check into the NightlySQLancer workflow
Instead of running SQLancer++ on every PR and master push, run it in the
scheduled NightlySQLancer workflow alongside SQLancer (every 3 days). Both jobs
now share the single arm_asan_ubsan build already produced by that workflow:

- Switch the sqlancer_pp job from amd_debug/CH_AMD_DEBUG (FUNC_TESTER_AMD) to
  arm_asan_ubsan/CH_ARM_ASAN_UBSAN (FUNC_TESTER_ARM), so it reuses the build and
  additionally gets sanitizer coverage.
- Remove the SQLancer++ wiring from master.py and pull_request.py.
- Add it to nightly_sqlancer.py; it runs in parallel with SQLancer after the
  shared build.

The SQLancer++ job script and image are arch-agnostic (openjdk-17 from apt, a
bare `clickhouse server` over HTTP:8123), so no changes are needed there.
2026-07-01 10:48:47 +02:00

50 lines
1.4 KiB
Python

from praktika import Job, Workflow
from ci.defs.defs import (
BASE_BRANCH,
DOCKERS,
SECRETS,
ArtifactConfigs,
ArtifactNames,
BuildTypes,
)
from ci.defs.job_configs import JobConfigs
# SQLancer runs against an ASan+UBSan ClickHouse server (the long run is a good
# place to surface memory errors and undefined behaviour), so build the
# arm_asan_ubsan binary in this workflow to satisfy the job's `CH_ARM_ASAN_UBSAN`
# artifact requirement.
asan_ubsan_build_job = Job.Config.get_job(
JobConfigs.build_jobs, f"Build ({BuildTypes.ARM_ASAN_UBSAN})"
).set_provides(ArtifactNames.CH_ARM_ASAN_UBSAN, reset=True)
# TODO: add alert on workflow failure
workflow = Workflow.Config(
name="NightlySQLancer",
event=Workflow.Event.SCHEDULE,
branches=[BASE_BRANCH],
jobs=[
asan_ubsan_build_job,
*JobConfigs.sqlancer_master_jobs,
# SQLancer++ shares the same arm_asan_ubsan build (it also requires
# CH_ARM_ASAN_UBSAN) and runs in parallel with SQLancer.
*JobConfigs.sqlancer_pp_jobs,
],
artifacts=[
*ArtifactConfigs.clickhouse_binaries,
],
dockers=DOCKERS,
secrets=SECRETS,
enable_cache=True,
enable_report=True,
enable_cidb=True,
# Every 3 days (the run itself is ~5h); day-of-month step.
cron_schedules=["13 6 */3 * *"],
pre_hooks=["python3 ./ci/jobs/scripts/workflow_hooks/store_data.py"],
)
WORKFLOWS = [
workflow,
]