Files
james.maesandClaude Fable 5.1 e267f4f84a
QRun-IO/ci-policy: ci / fork-guard (pull_request) Skipped
QRun-IO/ci-policy: ci / fork-guard (push) Skipped
QRun-IO/ci-policy: native / fork-deny (pull_request) Skipped
QRun-IO/ci-policy: native / dotnet-0 (pull_request) Skipped
QRun-IO/ci-policy: native / fork-deny (push) Skipped
QRun-IO/ci-policy: native / dotnet-0 (push) Skipped
QRun-IO/ci-policy: ci / Scoped workflow [workflow 1e25bb5a243dfdcd95d4b9a4f780200ff8c8778a] (pull_request) Successful in 10s
QRun-IO/ci-policy: ci / Scoped workflow [workflow 1e25bb5a243dfdcd95d4b9a4f780200ff8c8778a] (push) Successful in 9s
QRun-IO/ci-policy: ci / head-profile (pull_request) Skipped
QRun-IO/ci-policy: native / native-result (pull_request) Successful in 6s
QRun-IO/ci-policy: ci / repository-policy (pull_request) Skipped
QRun-IO/ci-policy: ci / application-template-0 (pull_request) Skipped
QRun-IO/ci-policy: ci / gradle-1 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-core-2-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-3 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-3-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-4 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-frontend-browser-5 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-6 (pull_request) Skipped
QRun-IO/ci-policy: ci / head-profile (push) Skipped
QRun-IO/ci-policy: native / native-result (push) Successful in 7s
QRun-IO/ci-policy: ci / java-maven-6-head (pull_request) Skipped
QRun-IO/ci-policy: ci / repository-policy (push) Skipped
QRun-IO/ci-policy: ci / java-maven-7 (pull_request) Skipped
QRun-IO/ci-policy: ci / application-template-0 (push) Skipped
QRun-IO/ci-policy: ci / java-maven-7-head (pull_request) Skipped
QRun-IO/ci-policy: ci / gradle-1 (push) Skipped
QRun-IO/ci-policy: ci / node-8 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-core-2-head (push) Skipped
QRun-IO/ci-policy: ci / node-9 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-3 (push) Skipped
QRun-IO/ci-policy: ci / node-10 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-3-head (push) Skipped
QRun-IO/ci-policy: ci / node-playwright-11 (pull_request) Skipped
QRun-IO/ci-policy: ci / repository-policy-12 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-4 (push) Skipped
QRun-IO/ci-policy: ci / java-frontend-browser-5 (push) Skipped
QRun-IO/ci-policy: ci / source-config-13 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-6 (push) Skipped
QRun-IO/ci-policy: ci / source-config-14 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-6-head (push) Skipped
QRun-IO/ci-policy: ci / android-0 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-7 (push) Skipped
QRun-IO/ci-policy: ci / original-business (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-7-head (push) Skipped
QRun-IO/ci-policy: ci / node-8 (push) Skipped
QRun-IO/ci-policy: ci / original-mcp (pull_request) Skipped
QRun-IO/ci-policy: ci / node-9 (push) Skipped
QRun-IO/ci-policy: ci / original-voyage (pull_request) Skipped
QRun-IO/ci-policy: ci / node-10 (push) Skipped
QRun-IO/ci-policy: ci / original-cli (pull_request) Skipped
QRun-IO/ci-policy: ci / node-playwright-11 (push) Skipped
QRun-IO/ci-policy: ci / repository-policy-12 (push) Skipped
QRun-IO/ci-policy: ci / not-enrolled (pull_request) Skipped
QRun-IO/ci-policy: ci / source-config-13 (push) Skipped
QRun-IO/ci-policy: ci / shared-pipeline (pull_request) Skipped
QRun-IO/ci-policy: ci / source-config-14 (push) Skipped
QRun-IO/ci-policy: ci / android-0 (push) Skipped
QRun-IO/ci-policy: ci / original-business (push) Skipped
QRun-IO/ci-policy: ci / original-mcp (push) Skipped
QRun-IO/ci-policy: ci / original-voyage (push) Skipped
QRun-IO/ci-policy: ci / ci-result (pull_request) Successful in 8s
QRun-IO/ci-policy: ci / original-cli (push) Skipped
QRun-IO/ci-policy: ci / not-enrolled (push) Skipped
QRun-IO/ci-policy: ci / shared-pipeline (push) Skipped
QRun-IO/ci-policy: ci / ci-result (push) Successful in 8s
maven / build (push) Failing after 9s
build / maven (push) Failing after 9s
docs(release): prepare the 0.1.0 release on the 0.1 train
Add CHANGELOG.md for the first published release and docs/RELEASES.md
describing the shared ci-workflows versioning (develop SNAPSHOT,
release/0.1 RC.N, tag vX.Y.Z stable), registry consumption and the
maintainer path. README now states the 0.1 train (0.1.0-RC.1 published,
0.1.0 cut by tag) instead of the coordinated snapshot; SNAPSHOT-RELEASE.md
is marked historical. The POM revision stays 0.1.0-SNAPSHOT on develop
because the workflow owns version computation.

Verified locally: ./mvnw.cmd verify, 33 tests, 0 failures/errors/skips,
JaCoCo gates met.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
2026-11-06 08:45:34 -06:00

3.8 KiB

Release operations

The current release train is 0.1. Its candidate 0.1.0-RC.1 is published to the Gitea Maven registry from release/0.1 (tag v0.1.0-RC.1, source 6b0814d83e18f70e3ea315a99e5aece1a562a213). The stable 0.1.0 is cut by tagging v0.1.0 on that train as described below. Changes are listed in CHANGELOG.md. Gitea (git.kof22.com/QRun-IO/qbit-redis) is primary for source, pull requests, CI, packages and releases; GitHub is a shadow/archive and its workflows are historical.

Use the Maven registry

Configure the consuming application's Maven repository setup with repository ID qrun-io and URL https://git.kof22.com/api/packages/QRun-IO/maven (releases enabled). The registry requires authentication for reads as well as writes: match the ID to a <server> entry in your private settings.xml that references your managed username/token through environment variables or encrypted Maven credentials. Never commit a token or put it on a command line. Then depend on com.kingsrook.qbits:qbit-redis:<version>; QQQ 4.1.0-RC.21 and Jedis resolve from Maven Central. Verify the downloaded JAR/POM against the hashes recorded for the release before adopting it.

Versioning

The POM version is the revision property. On develop it stays 0.1.0-SNAPSHOT and is never hand-set: the shared KofTwentyTwo/ci-workflows Maven workflow (called by .gitea/workflows/build.yaml on every push) computes and commits versions.

Ref Build Published version
feature branches, pull requests, main mvn verify only none
develop mvn deploy current X.Y.0-SNAPSHOT (bumped to the next minor after a release merges back)
release/X.Y mvn deploy, bump commit, tag vX.Y.0-RC.N X.Y.0-RC.N
tag vX.Y.Z mvn deploy, bump commit pushed to main X.Y.Z
hotfix/* mvn deploy, bump commit, tag X.Y.(Z+1)

The workflow runs the tests once inside mvn deploy on the container-build runner, which provides the Docker daemon the Redis Testcontainers suites need.

Maintainer release path

  1. Merge reviewed changes into develop through a normal pull request; the develop run publishes the SNAPSHOT.
  2. Merge develop into release/0.1 (pull request or fast-forward). The push publishes the next 0.1.0-RC.N, commits Bump version to 0.1.0-RC.N [skip ci] and tags v0.1.0-RC.N on that bump commit. Consumers qualify the RC.
  3. Bring main to the release-train head before tagging: the tag run pushes its Bump version to 0.1.0 commit with git push origin HEAD:main, which must be a fast-forward. main currently carries CI-only commits with different SHAs from the equivalent develop commits, so it must be reset or merged to the release/0.1 head first.
  4. Tag the qualified source: git tag -s v0.1.0 <release/0.1 head> and push the tag to origin only. The tag run sets revision to 0.1.0, deploys com.kingsrook.qbits:qbit-redis:0.1.0 to the registry and pushes the bump commit to main. A passing run alone does not prove publication: resolve the exact version's JAR/POM from the registry with an authenticated client and record their SHA-256 values here.
  5. Create a Gitea release for v0.1.0 (the shared workflow does not), attach the same qbit-redis-0.1.0.jar, qbit-redis-0.1.0.pom and a flat SHA256SUMS, read them back with the approved forge identity, then publish. Never replace different bytes under a released version.
  6. Merge release/0.1 back into develop; the next develop run moves it to 0.2.0-SNAPSHOT.

Publication is separate from host adoption. The optional scenarios in TODO.md (QQQ #1300/#1301/#1302) are not declared supported by a release; TOPOLOGY-QUALIFICATION.md records what the fixtures demonstrate.