Files
datastore/ci/workflows/nightly_changelog.py
Alexey MilovidovandClaude Fable 5 252c17d9b0 Add a nightly CI job preparing the changelog for the upcoming release
The `NightlyChangelog` workflow runs daily. It generates the raw
changelog entries for the pull requests newly merged into `master`,
using `tests/ci/changelog.py` in the `style-test` container (the same
way `create_release.yml` runs it), and inserts them into `CHANGELOG.md`
as a marker-delimited block. Then it edits them following
`.claude/skills/edit-changelog/SKILL.md` via the `codex` CLI (the same
way the `Code Review` job runs it), integrating them into the
in-progress release section. Generation and edit are two separate
commits, mirroring the manual autogenerated-plus-edited commit pairs of
past releases.

The result is maintained on a per-release bot branch
(`auto/changelog-X.Y`) with a draft pull request that the release
manager finalizes at release time. The point up to which the changelog
was generated is remembered as a `Changelog-generated-up-to:` trailer
in the generate commits, so the next daily run continues from there.
After `master` moves on to the next version, the previous cycle's
branch gets a final catch-up, up to the `v*.1.1-new` tag that started
the new cycle.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-21 16:01:54 +00:00

34 lines
1.0 KiB
Python

from praktika import Job, Workflow
from ci.defs.defs import BASE_BRANCH, SECRETS, RunnerLabels
# Daily preparation of CHANGELOG.md for the upcoming release. The job
# generates raw changelog entries for the pull requests newly merged into
# master (utils/changelog wrapper around tests/ci/changelog.py) and edits them
# following .claude/skills/edit-changelog/SKILL.md, committing the two states
# separately to a per-release bot branch (auto/changelog-X.Y) with a draft PR
# that the release manager finalizes at release time.
# See ci/jobs/changelog_nightly.py.
workflow = Workflow.Config(
name="NightlyChangelog",
event=Workflow.Event.SCHEDULE,
branches=[BASE_BRANCH],
jobs=[
Job.Config(
name="Prepare changelog",
command="python3 ./ci/jobs/changelog_nightly.py",
runs_on=RunnerLabels.STYLE_CHECK_ARM,
enable_gh_auth=True,
),
],
secrets=SECRETS,
enable_report=True,
enable_cidb=False,
cron_schedules=["23 2 * * *"],
)
WORKFLOWS = [
workflow,
]