From 361f1eeff7b8ff0ef72f539b52a3c94b49f2ff7f Mon Sep 17 00:00:00 2001 From: Oleksandr Nikolaichuk Date: Thu, 24 Sep 2026 07:44:20 +0200 Subject: [PATCH 1/2] Add RELEASING.md --- RELEASING.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 RELEASING.md diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 0000000..49373b7 --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,41 @@ +# Releasing + +Every push to `master` runs `maven_release.yml`, which builds, signs with the +organisation key and publishes to Maven Central through the `deploy` +environment. While the version in `pom.xml` ends in `-SNAPSHOT` that publishes a +snapshot; a release is the same push with a release version. So a release is +three pull requests and one tag, the way 0.2.11 was cut in #168 and 0.2.12 in +#194. + +## Before + +- `master` is green on JDK 17, 21 and 25, and the last `maven_release.yml` run + on `master` succeeded. +- Every change meant for the release is merged. Nothing merges on its author's + approval alone: one approval from another collaborator, or no objection after + a week (issue #71). +- The release notes are drafted from the merged pull requests, with authors + credited by handle. + +## Steps + +1. Open a pull request titled `0.2.N release` that changes the version and the + scm `` in `pom.xml` from `0.2.N-SNAPSHOT` to `0.2.N`. Get it approved + like any other change, then merge it. The push to `master` publishes `0.2.N` + to Maven Central; wait for the workflow to finish and for the version to + appear at + https://repo1.maven.org/maven2/org/openapitools/jackson-databind-nullable/. +2. Tag the merge commit `v0.2.N` and push the tag. Create the GitHub release + from the tag with the drafted notes. +3. Open and merge a pull request `prepare 0.2.N+1 snapshot` that sets the + version back to `0.2.N+1-SNAPSHOT` (and the scm `` with it). Nothing + else merges between steps 1 and 3: every push to `master` runs the deploy + again, and a second publish of `0.2.N` fails. +4. Open the version bump in OpenAPITools/openapi-generator, where the Java + templates pin `jackson-databind-nullable-version`, as #24501 did for 0.2.11. + +## If something goes wrong + +A failed `maven_release.yml` run on the release commit publishes nothing; +fix `master` and push again, the workflow reruns on every push. A version that +reached Maven Central cannot be removed; ship `0.2.N+1` with the fix instead. From 445ad7e80fa3d1f256cc68e546c71d2dff22948e Mon Sep 17 00:00:00 2001 From: Oleksandr Nikolaichuk Date: Sat, 3 Oct 2026 10:31:07 +0200 Subject: [PATCH 2/2] RELEASING.md: fixes from review Drop the deploy environment (the workflow doesn't use it), spell out the scm tag, say the freeze covers Dependabot, and what to check when the publish step fails. --- RELEASING.md | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/RELEASING.md b/RELEASING.md index 49373b7..788d269 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -1,11 +1,10 @@ # Releasing Every push to `master` runs `maven_release.yml`, which builds, signs with the -organisation key and publishes to Maven Central through the `deploy` -environment. While the version in `pom.xml` ends in `-SNAPSHOT` that publishes a -snapshot; a release is the same push with a release version. So a release is -three pull requests and one tag, the way 0.2.11 was cut in #168 and 0.2.12 in -#194. +organisation key and publishes to Maven Central. While the version in `pom.xml` +ends in `-SNAPSHOT` that publishes a snapshot; a release is the same push with a +release version. So a release is three pull requests and one tag, the way 0.2.11 +was cut in #168 and 0.2.12 in #194. ## Before @@ -19,23 +18,28 @@ three pull requests and one tag, the way 0.2.11 was cut in #168 and 0.2.12 in ## Steps -1. Open a pull request titled `0.2.N release` that changes the version and the - scm `` in `pom.xml` from `0.2.N-SNAPSHOT` to `0.2.N`. Get it approved - like any other change, then merge it. The push to `master` publishes `0.2.N` +1. Open a pull request titled `0.2.N release` that changes the version in + `pom.xml` from `0.2.N-SNAPSHOT` to `0.2.N` and the scm `` from + `jackson-databind-nullable-0.2.N-SNAPSHOT` to + `jackson-databind-nullable-0.2.N`. Get it approved like any other change, + then merge it. The push to `master` publishes `0.2.N` to Maven Central; wait for the workflow to finish and for the version to appear at https://repo1.maven.org/maven2/org/openapitools/jackson-databind-nullable/. 2. Tag the merge commit `v0.2.N` and push the tag. Create the GitHub release from the tag with the drafted notes. 3. Open and merge a pull request `prepare 0.2.N+1 snapshot` that sets the - version back to `0.2.N+1-SNAPSHOT` (and the scm `` with it). Nothing - else merges between steps 1 and 3: every push to `master` runs the deploy - again, and a second publish of `0.2.N` fails. + version to `0.2.N+1-SNAPSHOT` and the scm `` to + `jackson-databind-nullable-0.2.N+1-SNAPSHOT`. Nothing else merges between + steps 1 and 3, Dependabot bumps included: every push to `master` runs the + deploy again, and a second publish of `0.2.N` fails. 4. Open the version bump in OpenAPITools/openapi-generator, where the Java templates pin `jackson-databind-nullable-version`, as #24501 did for 0.2.11. ## If something goes wrong -A failed `maven_release.yml` run on the release commit publishes nothing; -fix `master` and push again, the workflow reruns on every push. A version that -reached Maven Central cannot be removed; ship `0.2.N+1` with the fix instead. +If the build job of `maven_release.yml` fails on the release commit, nothing is +published; fix `master` and push again, the workflow reruns on every push. If +the publish step itself failed, check Maven Central and the Central Portal +before pushing again: the upload may still go through. A version that reached +Maven Central cannot be removed; ship `0.2.N+1` with the fix instead.