Skip to content

Support IntelliJ IDEA 2026.x and add a release workflow - #283

Merged
filiphr merged 5 commits into
mainfrom
idea-2026-support-and-release-workflow
Nov 12, 2026
Merged

filiphr merged 5 commits into
mainfrom
idea-2026-support-and-release-workflow

Conversation

@filiphr

@filiphr filiphr commented Nov 12, 2026

Copy link
Copy Markdown
Member

Prepares the 1.10.0 release. Each commit covers one topic and can be reviewed on its own.

IntelliJ IDEA 2026.x support

  • Build against 2026.1 and raise since-build to 261. 2025.x is no longer supported.
  • CI tests 2026.1 (JDK 21), 2026.2, 2026.3 and the latest EAP snapshot (JDK 25, since 2026.2+ ships Java 25 class files).

Gradle 9.8.2

Release workflow

New manual Release workflow (.github/workflows/release.yml) running in the release environment:

  • Release version defaults to the current -SNAPSHOT without the suffix. The next version defaults to the next patch. Both can be overridden through the inputs.
  • Release notes come from NEXT_RELEASE_CHANGELOG.md, with empty sections dropped. The file is reset to the template after the release.
  • Builds the plugin, signs it (signPlugin + verifyPluginSignature), attests the build provenance, and publishes it to the JetBrains Marketplace.
  • Commits the release and the next development version, pushes them atomically with the tag, and creates the GitHub release with the signed zip attached.
  • The release job runs buildPlugin only, so it relies on CI having tested the commit.

Required secrets in the release environment: JETBRAINS_MARKETPLACE_TOKEN, CERTIFICATE_CHAIN, PRIVATE_KEY, PRIVATE_KEY_PASSWORD.

The provenance can be checked with gh attestation verify <zip> --repo mapstruct/mapstruct-idea.

Dependency verification

  • gradle/verification-metadata.xml verifies the Gradle plugins and everything that ends up in the plugin zip or runs during signing and publishing (runtimeClasspath, intellijPlatformRuntimeClasspath, intellijPlatformSandboxRuntimeClasspath, marketplaceZipSigner).
  • Verification is disabled for the other configurations (tests, checkstyle, jacoco), so new IDE versions and EAP snapshots don't require updating the file.
  • The IntelliJ Platform artifacts are trusted, since they come from JetBrains' repositories and change with every IDE version.
  • zipSigner is pinned to 0.1.45 and mavenLocal() is removed.

1.10.0

  • Release notes added to change-notes.html and NEXT_RELEASE_CHANGELOG.md.
  • Version bumped to 1.10.0-SNAPSHOT.

Testing

  • build jacocoTestReport with verification enforced on 2026.1, 2026.2 and 2026.3.
  • buildPlugin, signPlugin and verifyPluginSignature with a throwaway key.
  • The release workflow itself has not run on GitHub yet.

- The minimum supported version is now 2026.1 (since-build 261)
- Test against IDEA 2026.1, 2026.2 and 2026.3, 2026.2 and later require JDK 25
The wrapper verifies the downloaded Gradle distribution with distributionSha256Sum.
- Manually triggered workflow running in the release environment
- The release and next development versions are deduced from pluginVersion when not set
- The plugin is signed (CERTIFICATE_CHAIN, PRIVATE_KEY, PRIVATE_KEY_PASSWORD secrets)
  and published with the JETBRAINS_MARKETPLACE_TOKEN secret
- The signed plugin gets a build provenance attestation and is attached to the GitHub release
- Similar to mapstruct core, the release notes are collected in NEXT_RELEASE_CHANGELOG.md,
  used for the GitHub release and reset for the next development version
- Remove the unused publish* Gradle properties
Verify the checksums of the Gradle plugins, of the dependencies packaged in the
plugin distribution and of the Marketplace ZIP signer. These run when signing and
publishing the plugin. The test, checkstyle and jacoco dependencies are not verified,
they only run in CI and depend on the IDEA version that is being tested against.
The release workflow only builds the plugin distribution without running the tests.

The mavenLocal() repository is removed, nothing is resolved from it.
@filiphr filiphr added this to the 1.10.0 milestone Nov 12, 2026
@filiphr
filiphr merged commit 9d0fbd8 into main Nov 12, 2026
11 checks passed
@filiphr
filiphr deleted the idea-2026-support-and-release-workflow branch November 12, 2026 18:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant