|
312 | 312 |
|
313 | 313 | ## Semi-Manual Release (Deferred Automation) |
314 | 314 |
|
315 | | -The project currently uses a simple, guarded, semi-manual release. Automation via tags is deferred until upstream activity picks up. |
| 315 | +The project currently uses a simple, guarded, semi-manual release. Automation via tags is deferred until upstream activity picks up, at which point there is a draft github action that needs finishing off. |
316 | 316 |
|
317 | 317 | Steps (run each line individually) |
318 | | -- set -euo pipefail |
319 | | -- test -z "$(git status --porcelain)" |
320 | | -- VERSION="$(awk -F= '/^VERSION=/{print $2; exit}' .env)"; echo "$VERSION" |
321 | | -- git checkout -b "rel-$VERSION" |
322 | | -- mvn -q versions:set -DnewVersion="$VERSION" |
323 | | -- git commit -am "chore: release $VERSION (branch-local version bump)" |
324 | | -- git tag -a "release/$VERSION" -m "release $VERSION" |
325 | | -- test "$(git cat-file -t "release/$VERSION")" = "tag" |
326 | | -- test "$(git rev-parse "release/$VERSION^{commit}")" = "$(git rev-parse HEAD)" |
327 | | -- git push origin "release/$VERSION" |
328 | | -- gh release create "release/$VERSION" --generate-notes -t "release $VERSION" |
329 | | -- set -a; . ./.env; set +a |
330 | | -- KEYARG=""; [ -n "$GPG_KEYNAME" ] && KEYARG="-Dgpg.keyname=$GPG_KEYNAME" |
331 | | -- mvn -P release -Dgpg.passphrase="$GPG_PASSPHRASE" $KEYARG clean deploy |
332 | | -- git push -u origin "rel-$VERSION" # optional; useful for PRs or provenance |
| 318 | +```shell |
| 319 | +test -z "$(git status --porcelain)" && echo "✅ Success" || echo "🛑 Working tree not clean; commit or stash changes first" |
| 320 | + |
| 321 | +VERSION="$(awk -F= '/^VERSION=/{print $2; exit}' .env)"; echo "$VERSION" |
| 322 | + |
| 323 | +git checkout -b "rel-$VERSION" && echo "✅ Success" || echo "🛑 Branch already exists did you bump the version after you completed the last release?" |
| 324 | + |
| 325 | +mvn -q versions:set -DnewVersion="$VERSION" && echo "✅ Success" || echo "🛑 Unable to set the new versions" |
| 326 | + |
| 327 | +git commit -am "chore: release $VERSION (branch-local version bump)" && echo "✅ Success" || echo "🛑 Nothing to commit; did you set the same version as already in the POM?" |
| 328 | + |
| 329 | +git tag -a "release/$VERSION" -m "release $VERSION" && echo "✅ Success" || echo "🛑 Tag already exists; did you bump the version after you completed the last release?" |
| 330 | + |
| 331 | +test "$(git cat-file -t "release/$VERSION")" = "tag" && echo "✅ Success" || echo "🛑 Tag not found; did you mistype the version?" |
| 332 | + |
| 333 | +test "$(git rev-parse "release/$VERSION^{commit}")" = "$(git rev-parse HEAD)" && echo "✅ Success" || echo "🛑 Tag does not point to HEAD; did you mistype the version?" |
| 334 | + |
| 335 | +git push origin "release/$VERSION" && echo "✅ Success" || echo "🛑 Unable to push tag; do you have permission to push to this repo?" |
| 336 | + |
| 337 | +gh release create "release/$VERSION" --generate-notes -t "release $VERSION" && echo "✅ Success" || echo "🛑 Unable to create the GitHub Release; do you have permission to push to this repo?" |
| 338 | + |
| 339 | +set -a; . ./.env; set +a |
| 340 | + |
| 341 | +KEYARG=""; [ -n "$GPG_KEYNAME" ] && KEYARG="-Dgpg.keyname=$GPG_KEYNAME" |
| 342 | + |
| 343 | +mvn -P release -Dgpg.passphrase="$GPG_PASSPHRASE" $KEYARG clean deploy && echo "✅ Success" || echo "🛑 Unable to deploy to Maven Central; check the output for details" |
| 344 | + |
| 345 | +git push -u origin "rel-$VERSION" && echo "✅ Success" || echo "🛑 Unable to push branch; do you have permission to push to this repo?" |
| 346 | + |
| 347 | +``` |
333 | 348 |
|
334 | 349 | If fixes occur after tagging |
335 | 350 | - git tag -d "release/$VERSION" |
|
0 commit comments