mirror of
https://github.com/hanzoai/datastore.git
synced 2026-09-26 13:55:07 +00:00
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.
50 lines
1.4 KiB
Python
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,
|
|
]
|