Skip to content

Release day: preflight, engine bump, native after-tag verification, checklist - #209

Merged
tae898 merged 5 commits into
mainfrom
chore/release-day-automation
Nov 3, 2026
Merged

tae898 merged 5 commits into
mainfrom
chore/release-day-automation

Conversation

@tae898

@tae898 tae898 commented Nov 3, 2026

Copy link
Copy Markdown
Collaborator

Closes #208

Release day of arcadedb-jvm and native arcadedb becomes a monthly routine in which only the owner's tag push is not a script run or CI. Every script and document takes the version as an argument (<VERSION>, <PREVIOUS>, <NEXT_DEV>); nothing is hard-coded to one release.

What is in it:

  • scripts/release_preflight.py VERSION: read-only, prints PASS, FAIL or SKIP with the evidence, exit code is the number of FAILs, a network or tool error is a FAIL. Checks: (a) the upstream GitHub release exists and is not a draft; (b) Maven Central has arcadedb-engine and arcadedb-server; (c) Docker Hub has the image for linux/amd64 and linux/arm64; (d) check_version.py accepts the version for both packages; (e) the latest conclusive Test native, Test JVM and Test Python Examples runs on main are green on every job; (f) the version and engine that release-jvm.yml, release-native.yml and test-native.yml derive from the tag, by running the real run: code of those steps with TAG=<VERSION> (a renamed step is a FAIL, no bash is a SKIP); (g) the native readiness variable for a final or post tag (SKIP when the login cannot read it). For A.B.C.postN the upstream checks look at A.B.C; for devN they are SKIPped.
  • scripts/bump_engine.py --engine NEW --dev-version NEXT [--check]: exact-anchor edit of the pins that dev, PR and nightly builds link, --check reports drift and writes nothing, a missing or repeated anchor stops it before any write, and it refuses a NEXT that check_version.py would refuse (it must also be a devN of a base above NEW). There are six pins, two more than were known: besides DEV_ENGINE, DEFAULT_VERSION, arcadedb.version and the build-image.sh default, the manual-run version default in test-native.yml and the --version default of native/wheel/build_wheel.py carry the dev version too. It reports native/wheel/THIRD_PARTY_NOTICES.md as TODO (generated, not edited), and --check stays at exit 1 until the notices name the new engine.
  • scripts/after_tag_verify.sh covers the native release with PACKAGE=native: artifact native-release-dist, windows-x64 optional for a devN and required for a final release, and a smoke run that asserts the native backend and ENGINE_VERSION. The default stays the JVM package.
  • release.adoc: a numbered "Release day" section (script, CI or owner for each step, the commands, how to pick <NEXT_DEV> from upstream main, the notices regeneration from the CI build record), and the statement that the JVM wheels read the Docker Hub image, the native build reads Maven Central, both carry the same upstream release and can appear hours apart. .github/ISSUE_TEMPLATE/release.md is the checklist issue to open once per release. README.md and ci.adoc say where each build gets its engine and which engine each workflow tests.

The local branch chore/engine-26.11.1 is superseded by bump_engine.py and is not part of this PR.

Tests: tests/test_release_preflight.py and tests/test_bump_engine.py, with mocked HTTP and subprocess (bash runs the real workflow step code), cover each FAIL path. Locally with --noconftest:

============================== 41 passed in 0.47s ==============================
============================== 22 passed in 0.07s ==============================

Real run of the preflight against the existing release 26.10.2 (read-only, from the branch; the two FAILs are real findings on main today: the Windows legs of the latest Test native run fail, and ARCADEDB_NATIVE_READINESS_BAR_MET is not set):

PASS  (a) GitHub release 26.10.2 on ArcadeData/arcadedb: published 2026-10-15T18:03:41Z https://github.com/ArcadeData/arcadedb/releases/tag/26.10.2
PASS  (b) Maven Central com.arcadedb:arcadedb-engine:26.10.2: HTTP 200 https://repo1.maven.org/maven2/com/arcadedb/arcadedb-engine/26.10.2/arcadedb-engine-26.10.2.pom
PASS  (b) Maven Central com.arcadedb:arcadedb-server:26.10.2: HTTP 200 https://repo1.maven.org/maven2/com/arcadedb/arcadedb-server/26.10.2/arcadedb-server-26.10.2.pom
PASS  (c) Docker Hub arcadedata/arcadedb:26.10.2: architectures amd64,arm64, last updated 2026-10-15T17:40:59.964721Z
PASS  (d) check_version.py 26.10.2 for arcadedb-jvm: OK: 26.10.2 is the correct next version (4 published versions read)
PASS  (d) check_version.py 26.10.2 for arcadedb: OK: 26.10.2 is the correct next version (4 published versions read)
FAIL  (e) latest conclusive test-native.yml run on main: run 41594705676 (push, 2026-11-03T07:11:48Z, sha 8031fe75450a) jobs 6 failure, 20 success; not green: Image and wheel (windows-x64) (failure), Parity against the installed wheel (windows-x64, Python 3.12) (failure), Examples on the installed wheel (windows-x64, Python 3.14) (failure), Examples on the installed wheel (windows-x64, Python 3.12) (failure), Parity against the installed wheel (windows-x64, Python 3.14) (failure), Examples summary (failure)
PASS  (e) latest conclusive test-jvm.yml run on main: run 41571864536 (push, 2026-11-03T03:22:59Z, sha e1f54996d1fe) jobs 18 success; main is now at 8031fe75450a, this run is for an earlier commit
PASS  (e) latest conclusive test-python-examples.yml run on main: run 41575646112 (schedule, 2026-11-03T04:01:38Z, sha e1f54996d1fe) jobs 22 success; main is now at 8031fe75450a, this run is for an earlier commit
PASS  (f) release-jvm.yml derives, for tag 26.10.2: version 26.10.2, engine 26.10.2, image arcadedata/arcadedb:26.10.2
PASS  (f) release-native.yml derives, for tag 26.10.2: version 26.10.2, final true
PASS  (f) test-native.yml links, for version 26.10.2: engine 26.10.2, final true
FAIL  (g) repository variable ARCADEDB_NATIVE_READINESS_BAR_MET: the variable is not set: release-native.yml publishes no final wheel

2 FAIL(s), 0 SKIP(s) for 26.10.2

🤖 Generated with Claude Code

tae898 and others added 2 commits November 3, 2026 21:09
…fication, checklist

scripts/release_preflight.py VERSION checks upstream release, Maven Central, Docker Hub, the version rule for both packages, CI on main, the version and engine the workflows derive from the tag (by running the real step code), and the native readiness variable. scripts/bump_engine.py moves the six dev-engine pins (found two beyond the three that were known: the manual-run version default in test-native.yml and the --version default of build_wheel.py) and reports the notices drift. after_tag_verify.sh gets PACKAGE=native. release.adoc gets the monthly Release day section, the issue template is the checklist, README and ci.adoc say where each build gets its engine.

Closes #208

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…g guard bans 'repo-root')

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tae898 and others added 3 commits November 3, 2026 22:06
…heck (f) is a SKIP on Windows

Windows run 41634526979: (1) bump_engine printed native\pom.xml, so its test on the message failed; the pins are now PurePosixPath, so messages read the same on every OS. (2) check (f) runs the workflows' bash step code, which exits 1 on the Windows runner; the preflight now reports SKIP with a reason when os.name is nt or bash is missing. The tests that run bash are skipped on Windows (skipif), and two new tests cover the SKIP for no bash and for Windows without running any bash.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… there

The repo allows no skips (scripts/check_test_skips.py, ALLOWED_SKIPS pinned empty by its test); a test that cannot run on a platform is left out of collection in tests/conftest.py. test_release_preflight.py joins WINDOWS_NOT_APPLICABLE (check (f) runs the workflows' bash step code; the Windows SKIP path stays covered by two tests on Linux and macOS), and the needs_bash skip markers go, so a POSIX runner without bash fails loudly instead of skipping.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tae898
tae898 merged commit 7e64c5e into main Nov 3, 2026
39 checks passed
@tae898
tae898 deleted the chore/release-day-automation branch November 3, 2026 14:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release day: preflight, engine bump and native after-tag verification as scripts

1 participant