Files
ClickHouse/ci/workflows/nightly_sqlancer.py
Groene AI 6b91168c3c Withdraw the long-retention tagging of two unrelated nightly workflows
The claim it rested on does not hold. Praktika uploads under
`REFs/<branch>/<sha>/<workflow>/<job>` (`_environment.py`
`get_s3_prefix_static` and `runner.py`, on master since `633ec9e571ae8`), so two
workflows uploading the same artifact name for one commit cannot overwrite each
other, and NightlyJepsen and NightlySQLancer could never downgrade MasterCI's
retention. The digest half of the rule does not reach them either: their
post-mangle build configs are cache-incompatible with MasterCI's, because their
docker graph carries no manifest job. What remains there is a retention policy
decision about two workflows this PR is not about, so it is reverted and the
helper docstring states the invariant that does hold.

NightlyFuzzers keeps the tags. It does share MasterCI's release build, and the
digest is measurably sensitive to them: dropping the helper there reddens
`test_digest_matches_master`.

The census arm that enumerated every non-PR workflow for the same collision goes
with the claim. The parametrized arm keeps the three call sites that apply the
helper.
2026-09-12 23:52:30 +00:00

62 lines
2.0 KiB
Python

from praktika import Job, Secret, Workflow
from ci.defs.defs import (
BASE_BRANCH,
DOCKERS,
SECRETS,
ArtifactConfigs,
ArtifactNames,
BuildTypes,
)
from ci.defs.job_configs import JobConfigs
# Both fuzzers run against two builds, so this workflow builds both:
# * arm_release - the wrong-result hunt. A sanitizer binary executes SQL
# 2-3x slower, so a release build explores several times
# more generated SQL per hour.
# * arm_asan_ubsan - memory errors and UB reached through generated SQL.
release_build_job = Job.Config.get_job(
JobConfigs.release_build_jobs, f"Build ({BuildTypes.ARM_RELEASE})"
).set_provides(ArtifactNames.CH_ARM_RELEASE, reset=True)
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)
workflow = Workflow.Config(
name="NightlySQLancer",
event=Workflow.Event.SCHEDULE,
branches=[BASE_BRANCH],
engine=Workflow.Engine.GH_ACTIONS,
jobs=[
release_build_job,
asan_ubsan_build_job,
*JobConfigs.sqlancer_master_jobs,
*JobConfigs.sqlancer_pp_jobs,
],
artifacts=[
*ArtifactConfigs.clickhouse_binaries,
],
dockers=DOCKERS,
# `SLACK_WEBHOOK_CORE_QA` (same webhook as NightlySchemaReplay in
# clickhouse-private) is used by ci/jobs/scripts/sqlancer_notify.py to alert
# #core-team-qa-alerts about failures this job has never reported before. The
# job runs fine without it - the notifier just prints what it would have sent.
secrets=[
*SECRETS,
Secret.Config(
name="SLACK_WEBHOOK_CORE_QA",
type=Secret.Type.GH_SECRET,
),
],
enable_cache=True,
enable_report=True,
enable_cidb=True,
# Every 3 days (the runs themselves are ~5h); day-of-month step.
cron_schedules=["13 6 */3 * *"],
pre_hooks=["python3 ./ci/jobs/scripts/workflow_hooks/store_data.py"],
)
WORKFLOWS = [
workflow,
]