This project follows Semantic Versioning (semver): MAJOR.MINOR.PATCH.
- Bump
MINORfor new features or non-breaking changes. - Bump
PATCHfor bug fixes and internal-only changes. - Reserve
MAJORfor breaking changes.
- Tags are prefixed with
v, for example:v0.2.1. - Create an annotated tag that matches the version in
build.gradle.kts.
- Update
version = "x.y.z"inbuild.gradle.kts. - Update
RELEASE_NOTES_TEMPLATE.mdinto actual release notes for the version. - Commit with message:
[Trelease.bump] Bump to x.y.z; post-test=N/A; compare=N/A. - Tag the commit:
git tag -a vx.y.z -m "Release vx.y.z" && git push origin vx.y.z. - Open a GitHub Release using the tag and paste the release notes.
- CI attaches artifacts to the workflow run. For Marketplace publishing:
- Ensure CI secrets are configured:
INTELLIJ_CERTIFICATE_CHAIN,INTELLIJ_PRIVATE_KEY,INTELLIJ_PRIVATE_KEY_PASSWORD,INTELLIJ_PUBLISH_TOKEN. - Run
./gradlew publishPluginlocally or via a protected CI job.
- Ensure CI secrets are configured:
- Perform the first upload manually via the JetBrains Marketplace UI to validate configuration.
- Subsequent releases can be automated using
publishPluginonce secrets are in place.
Use this path when automated publishing is not enabled yet.
- Ensure local verification is green:
./gradlew test verifyPlugin buildPlugin
- Confirm plugin metadata:
build.gradle.ktsversion is correctsrc/main/resources/META-INF/plugin.xmlhas current notes/compatibility
- Build distributable:
./gradlew buildPlugin- Artifact:
build/distributions/CodexJetbrains-<version>.zip
- Prepare release notes from
RELEASE_NOTES_TEMPLATE.md. - Create git tag and push tag:
git tag -a v<version> -m "Release v<version>"git push origin v<version>
- Publish in JetBrains Marketplace UI:
- Upload ZIP
- Paste release notes
- Confirm channel/version metadata
- Post-publish checks:
- Verify listing displays correct version and changelog
- Smoke-install from Marketplace in IntelliJ IDEA 2025.2+