platform/jewel/docs/releasing-guide.md
Releasing a new Jewel version is a complex process that involves cherry-picking changes from the master branch to the target release branches, and it can only be done by someone at JetBrains with access to the monorepo. After the cherry-picks are done and merged to the respective branches, they need to trigger the TeamCity job to publish the artefacts to Maven Central.
Please ping Jakub, Nebojsa, or Sasha for help and guidance.
High-level steps:
gradle.properties and the IJP target to the latest stable
in the Gradle version catalog../gradlew check detekt detektMain detektTest --continue
metalava/{moduleName}-baseline[-stable]-current.txt), remove all findings, only
leaving the baseline version header on the first line. This lets you see all issues accumulated over this release in
the following steps
../scripts/metalava-signatures.main.kts clean-baselines
master branch, and fix any issues you find:
../scripts/metalava-signatures.main.kts validate --release <previous-release>
../scripts/metalava-signatures.main.kts validate --release <previous-release> --update-baselines
ReplaceWith argument, and test that it works (very important!)../scripts/metalava-signatures.main.kts update --release <new-release>
../scripts/extract-release-notes.main.kts --since [yyyy-mm-dd]
new_release_notes.md file in the Jewel root that you can copy in
the RELEASE NOTES.md filemaster252)
./gradlew generateThemes --rerun-tasks to update the standalone theme definitionstests.cmd script)master:
../scripts/metalava-signatures.sh --validate --release <new-release>
JEWEL-[Jewel version]-[major IJP version]. For
example, for Jewel 0.30.0, JEWEL-0.30.0-251 on the 251 branch and JEWEL-0.30.0-252 on the 252 branch.Before pulling the trigger on a release process, it's a good idea to make sure that all and only the artefacts that should be published actually get published. You should also inspect the POM files to make sure that all the dependencies are set up correctly.
The version of the artefacts is a concatenation of:
gradle.properties — e.g., 0.29.0SNAPSHOTTo do a test publish run, you can run the
JewelMavenArtifactsBuildTarget task. The artefacts will be
written to the maven-artifacts folder.
[!IMPORTANT] If you are running it from the Community repository, you'll need to temporarily change the value of the
BuildContextImpl.createContext'sprojectHomefrom its default value ofULTIMATE_HOMEtoCOMMUNITY_ROOT.communityRoot.Don't commit the change!