docs/releasing.md
BTrace uses an automated release process via GitHub Actions. The release is triggered using the scripts/release.sh script.
gh auth logindevelop for major/minor releases, or release/X.Y for patch releases| Type | When to Use | Example |
|---|---|---|
| major | Breaking changes, major new features | 2.3.0-SNAPSHOT → 3.0.0 |
| minor | New features, non-breaking changes | 2.3.0-SNAPSHOT → 2.3.0 |
| patch | Bug fixes on release branch | 2.3.1-SNAPSHOT → 2.3.1 |
# Minor release from develop (most common)
./scripts/release.sh minor
# Major release from develop
./scripts/release.sh major
# Patch release from a release branch
./scripts/release.sh patch release/2.3
# Dry run (see what would happen without triggering)
DRY_RUN=true ./scripts/release.sh minor
The release workflow performs these steps:
After step 5, the workflow pauses and waits for you to manually release the Maven artifacts:
If you don't want to proceed:
This checkpoint allows you to verify the release before it becomes irreversible.
BTrace uses trunk-based development with develop as the main branch:
vX.Y.Z format (e.g., v2.3.0) - the latest release is always identifiable via tagsFor critical releases, you can trigger a dry run first:
DRY_RUN=true ./scripts/release.sh minor
Or use the GitHub Actions UI to trigger with dry_run: true.
Artifacts are staged to Maven Central via the Central Portal. The workflow does not auto-release - you must manually publish from the Central Portal after reviewing the staged artifacts.
<dependency>
<groupId>io.btrace</groupId>
<artifactId>btrace-client</artifactId>
<version>VERSION</version>
</dependency>
Available artifacts:
io.btrace:btrace-agentio.btrace:btrace-clientio.btrace:btrace-bootThe workflow uses these GitHub secrets:
SONATYPE_USERNAME: Central Portal user token usernameSONATYPE_PASSWORD: Central Portal user token passwordGPG_SIGNING_KEY: GPG private key for artifact signingGPG_SIGNING_PWD: GPG key passphraseGenerate Central Portal tokens at: https://central.sonatype.com/account
After the GitHub release is created, the workflow announces the new version to SDKMan. BTrace will be available via:
sdk install btrace
For major releases, sdkMajorRelease is used; for minor/patch, sdkMinorRelease is used.
JBang automatically picks up new versions from Maven Central. No manual action required. Once Maven Central has the artifacts, users can run:
jbang catalog add --name btraceio https://raw.githubusercontent.com/btraceio/jbang-catalog/main/jbang-catalog.json
jbang btrace@btraceio <PID> script.java
Release checklist for JBang:
btraceio/jbang-catalog automatically when JBANG_CATALOG_PAT is configured.btrace.java in btraceio/jbang-catalog to the new major/minor version.If the workflow is waiting for Maven Central and you want to abort:
git tag -d vX.Y.Z
git push origin :refs/tags/vX.Y.Z
git checkout release/X.Y
git reset --hard <previous-commit>
git push --force origin release/X.Y
Once artifacts are released to Maven Central, they cannot be deleted. You can only:
Similarly, SDKMan announcements cannot be retracted.
./gradlew :btrace-dist:sdkMinorRelease# For minor/patch releases
./gradlew :btrace-dist:sdkMinorRelease
# For major releases
./gradlew :btrace-dist:sdkMajorRelease