This is an automated email from the ASF dual-hosted git repository.

jdaugherty pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/grails-intellij-plugin.git

commit 81501d70e02d19747c1beddb9306216c0a5e990e
Author: James Daugherty <[email protected]>
AuthorDate: Sat Jul 18 15:43:50 2026 -0400

    Record migration progress in plan
---
 MIGRATION-PLAN.md | 43 ++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 40 insertions(+), 3 deletions(-)

diff --git a/MIGRATION-PLAN.md b/MIGRATION-PLAN.md
index 797eab2..da1010d 100644
--- a/MIGRATION-PLAN.md
+++ b/MIGRATION-PLAN.md
@@ -64,6 +64,17 @@ blind deletion of imported infra).
    channel.
 5. **Versioning**: keep the `<platform-branch>.x.y` scheme (`253.0.0`) or 
align with a
    Grails-style scheme. Marketplace convention favors the platform-branch 
scheme — keep it.
+6. **Maven publishing** (added 2026-07-18): also publish the plugin ZIP to the 
ASF Nexus
+   (`repository.apache.org`, syncs to Maven Central on staging release) under
+   `org.apache.grails:grails-intellij-plugin` — Maven coordinates are 
independent of the
+   Marketplace plugin id, so the Apache groupId works even though the plugin 
id stays
+   `org.intellij.grails`.
+7. **Signing keys** (added 2026-07-18): the existing Grails release GPG key 
(from the
+   project `KEYS` file) covers all ASF signing — source zip, convenience 
binary, Maven
+   `.asc` files. JetBrains Marketplace plugin signing is a separate mechanism: 
it
+   requires an X.509 certificate chain + RSA private key (PEM), not PGP, so a 
dedicated
+   key/cert pair must be generated (per JetBrains docs) and stored as the
+   `CERTIFICATE_CHAIN`/`PRIVATE_KEY`/`PRIVATE_KEY_PASSWORD` secrets.
 
 ---
 
@@ -115,7 +126,11 @@ feasible; the constraints and the plan:
 
 ## Phase 1 — ASF repo metadata
 
-One commit: "ASF Compliance - repository metadata".
+DONE (2026-07-18): committed as "Add ASF repository metadata" — NOTICE, HEADER,
+LICENSE rename, `.asf.yaml` (release environment + branch protection + 
notifications),
+README.md. Also added later: `INSTALL` + `.sdkmanrc` + `gradle-bootstrap/` 
(source
+distro ships without the wrapper jar; `cd gradle-bootstrap && gradle bootstrap`
+regenerates it pinned to `.sdkmanrc`, grails-core's pattern).
 
 - **`NOTICE`** (new, required by policy). Model on grails-core's:
 
@@ -230,7 +245,10 @@ generated Ivy descriptors). Remaining details below for 
reference.
 
 ## Phase 4 — Identity & conventions cleanup
 
-One commit: "ASF Compliance - plugin identity".
+DONE (2026-07-18): committed as "Update plugin vendor and Gradle groups to 
Apache" —
+vendor is Apache Software Foundation (url grails.apache.org), Gradle groups are
+`org.apache.grails.intellij*`. Plugin id and extension-point namespaces stay
+`org.intellij.grails` per decision 2. Package renames remain out of scope.
 
 - `plugin.xml`: `vendor` → Apache Software Foundation (Grails), vendor URL
   `https://grails.apache.org/`, plugin description/links updated; keep plugin 
id per
@@ -247,6 +265,13 @@ One commit: "ASF Compliance - plugin identity".
 
 ## Phase 5 — GitHub Actions: build & verification CI
 
+DONE (2026-07-18): committed as "Add CI workflows for build, verification, and 
RAT" —
+`gradle.yml` (build+test with plugin ZIP artifact, Plugin Verifier job with
+`recommended()` IDEs) and `rat.yml` (grails-core's, adapted to `main`, 
Develocity/
+TestLens dropped per decision 3). All actions pinned to grails-core's SHAs. The
+`test.idea.home.path` property is now only applied when the path exists, so 
`check`
+runs on CI. NOT yet validated on a real GitHub runner — first PR will shake it 
out.
+
 One commit: "ASF Compliance - CI workflows". Follow grails-core's patterns: 
all actions
 **pinned to full commit SHAs**, `concurrency` group per workflow+ref, publish 
gated on
 test jobs via `needs:` **and** `if:` result guards.
@@ -272,6 +297,17 @@ test jobs via `needs:` **and** `if:` result guards.
 
 ## Phase 6 — GitHub Actions: ASF release & Marketplace publishing
 
+DONE (2026-07-18, initial draft): committed as "Add release workflow and 
Marketplace
+signing config" + "Publish plugin ZIP to ASF Maven repository". `release.yml` 
jobs:
+`publish` (check/buildPlugin/signPlugin, GPG-sign + sha512, attach to GitHub 
release,
+stage Maven artifacts to repository.apache.org), `source` (src zip without 
wrapper/
+.github, GPG-sign + sha512), `upload` (svn to dist/dev for the vote), `release`
+(environment-gated: svn mv dev->release, `publishPlugin` to Marketplace, 
manual Nexus
+staging release + reporter/email reminders). Secrets needed: GRAILS_GPG_KEY,
+GPG_KEY_ID, GPG_PASSPHRASE, SVC_DIST_GRAILS_USERNAME/PASSWORD, 
NEXUS_USERNAME/PASSWORD,
+CERTIFICATE_CHAIN, PRIVATE_KEY, PRIVATE_KEY_PASSWORD, PUBLISH_TOKEN. Needs a 
dry-run
+against a test tag before first use (Phase 8).
+
 One commit: "ASF Compliance - release workflow". Modeled on grails-core's 
`release.yml`
 and the `apache/grails-github-actions` composite actions, adapted because the 
deliverable
 is a plugin ZIP, not Maven artifacts (no Nexus staging at all):
@@ -306,7 +342,8 @@ convenience binary.
 
 ## Phase 7 — Artifact compliance
 
-Part of Phase 5/6 commits or separate:
+DONE (2026-07-18): LICENSE/NOTICE are packaged into the plugin jar META-INF via
+`processResources` (verified in the built ZIP). Stretch goals below remain 
open.
 
 - Ensure `LICENSE` and `NOTICE` are packaged **inside the plugin ZIP / jar 
META-INF**
   (grails-core gets this from its shared build-logic plugins; here add a small 
Gradle

Reply via email to