mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2026-10-28 16:18:23 +08:00
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.
62 lines
2.0 KiB
Python
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,
|
|
]
|