docs/RELEASING.md
Steps to publish a new Karate release. Replace X.Y.Z with the version being released.
main is green on CIpom.xml (remove any -SNAPSHOT or .RC* suffix):
mvn versions:set -DnewVersion=X.Y.Z -DgenerateBackupPoms=false
[no ci] — main is already green and the Maven release job runs the full test suite). The vX.Y.Z tag is created later via the GitHub release UI, not from the CLI:
git add -A && git commit -m "release X.Y.Z [no ci]"
git push
X.Y.Z (must match the tag exactly) Go to https://github.com/karatelabs/karate/releases/new and create tag vX.Y.Z on the release form (target: main) — this creates the tag as part of publishing the release
Set the release title to vX.Y.Z explicitly (must match the tag) — if left blank, the GitHub UI defaults the title to the most recent commit message
Write release notes following the template below — one-line bullets, issue refs at the end (e.g. #2843), milestone link, compare link, 2.0.0 migration note, then ### Artifacts. See v2.0.8 / v2.0.9 for reference renderings.
## Important Fixes
* <one-line description of the fix, ending with the issue ref> #NNNN
* ...
## New Features & Enhancements
* <one-line description — issue ref optional, only when there's a tracking issue>
* ...
View the complete list of [all issues fixed in this release](https://github.com/karatelabs/karate/milestone/NN?closed=1).
**Full Changelog**: https://github.com/karatelabs/karate/compare/vPREVIOUS...vX.Y.Z
**Important**: refer [2.0.0 release notes](https://github.com/karatelabs/karate/releases/tag/v2.0.0) for those upgrading from 1.X
### Artifacts
* [Maven artifacts](https://central.sonatype.com/artifact/io.karatelabs/karate-core/X.Y.Z)
* [Standalone JAR](https://docs.karatelabs.io/getting-started/standalone-execution) (download below)
* CVE / SBOM report (download below)
Style notes:
Upload release assets (attach to the GitHub release):
karate-X.Y.Z.jar (fat jar)cve-sbom-report.htmlX.Y.Z milestone, leaving a vX.Y.Z released comment on each (always — including issues already labeled fixed):
gh issue close <NUM> -R karatelabs/karate -c "vX.Y.Z released"
X.Y.ZThis is critical — the CLI installer pulls versions from this manifest.
karate-sh repo (sibling directory ../karate-sh)public/manifest.json:
karate artifacturl to the fat jar download URL on GitHub Releasessha256 from the release asset or compute locally:
shasum -a 256 karate-X.Y.Z.jar
stable channel from the previous version to the new onechannel_defaults.stable to point to X.Y.Zgenerated_at timestamp1.5.2 legacy anchor for v1 users. Drop everything else. The JARs stay on GitHub Releases either way; the manifest is just the installer's lookup index, so this only affects what karate.sh can resolve by version name.main (Netlify auto-deploys)curl -s https://karate.sh/manifest.json | jq '.channel_defaults.stable'../karate-sh/README.md for full manifest schema details../karate-template to use version X.Y.Z../karate-todo to use version X.Y.ZTODO: Automate this step with CI/CD — a workflow that bumps the Karate version across all example projects and runs their tests.
../karate-examples — bump Karate version to X.Y.Z in all example pom.xml / build.gradle filespom.xml to the next RC version:
mvn versions:set -DnewVersion=X.Y.Z+1.RC1 -DgenerateBackupPoms=false
[no ci] to skip the CI build for this bump):
git add -A && git commit -m "prepare for next development iteration [no ci]"
git push