INTERNAL-2043 Add GitHub release actions to open-source plugin repos#1
Merged
Conversation
Following monorepo's docs/plugin-migration-guide.md and ad-hoc fixes for transitive deps not in the published org.nrg:parent BOM. build.gradle: - vXnat: 1.9.0 → 1.10.1-SNAPSHOT (monorepo target) - Java: VERSION_1_8 → VERSION_21 (source/targetCompatibility) - Add io.spring.dependency-management 1.1.7 plugin (guide §1) - Add dependencyManagement.imports mavenBom 'org.nrg:parent' (guide §1) - Lombok: hardcode version 1.18.34 + sha256 (guide §2 — importedProperties returns null under java-platform BOM) - Drop org.nrg.xnat:xnat-data-models dependency (merged into :web; guide §3) - velocity / javax.servlet-api: implementation → compileOnly (guide §4) - turbine:turbine: add excludes for velocity:texen + jamon:jamon (transitive deps no longer in any reachable repo) - configurations.all: exclude 5 legacy artifacts brought in by log4j 1.x (com.sun.jdmk:jmxtools, com.sun.jmx:jmxri, javax.jms:jms, javax.sql:jdbc-stdext, javax.transaction:jta — Sun commercial / pre-2007 jars not in maven central) gradle/wrapper/gradle-wrapper.properties: - 8.10.2-all → 9.4.1-all (matches monorepo wrapper) Requires monorepo branch NrgXnat/xnat#data-builder-src-restore for the xnat-data-builder plugin jar to contain its implementation class. Verified: ./gradlew clean build → BUILD SUCCESSFUL, produces mfa-plugin-1.6.0-SNAPSHOT.jar (89K).
3 workflows under .github/workflows/ for plugin CI, mirroring monorepo NrgXnat/xnat with plugin-specific simplifications: - build-publish.yml: thin caller around the shared reusable workflow in NrgXnat/xnat-ci-workflows. JFrog only (publish-ghcr left at reusable's default false; no Docker image for plugins). Triggers on push to main / develop / releases/*; workflow_dispatch with publish_jfrog input. - release-cut-rc.yml: cuts releases/<release>-rc from develop, bumps source_branch to next dev version, dispatches build-publish on both. Plugin variant: no dicom-edit6 bump; version sed pattern adapted to build.gradle Groovy DSL (^version "..."$). - release-promote.yml: finalizes RC, merges into target_main (default main) with --no-ff, tags, dispatches build-publish. Plugin variant: no target_develop / no dicom-edit6 sync step. actionlint pass on all three.
…nvention Read artifactoryUser/Token via project.findProperty (matches CI workflow's ORG_GRADLE_PROJECT_artifactoryUser/Token env-var mapping), with ARTIFACTORY_USER/TOKEN env-var fallback. Standardize URL to -local repos. Mirrors monorepo's buildSrc/buildlogic.java-common-conventions.gradle pattern.
…tern Replace 187-line + 165-line inline workflows with ~37-line callers that delegate to NrgXnat/xnat-ci-workflows reusable workflows: - gradle-release-cut-rc.yml@v1 - gradle-release-promote.yml@v1 Total YAML saved per plugin: ~278 lines. Behavior unchanged — the reusable workflows were extracted verbatim from the previous inline scripts.
The shared reusable workflow gradle-build-publish.yml@v1 has a publish-ghcr job declaring 'permissions: contents: read, packages: write'. Even though that job is gated by 'if: inputs.publish-ghcr' (default false), GitHub Actions parses the permissions at workflow startup. If the caller doesn't grant 'packages: write', the run fails with startup_failure before any job runs. Validated by dispatching build-publish on mfa-plugin/fake-develop: - Without packages: write → startup_failure in 2s - With packages: write → reaches Stage 1 Gradle build Mirrors xnat monorepo's build-publish.yml caller pattern.
The plugin was never actually configured (no `mavenSettings { }` block) and
publishing credentials now flow via findProperty + ARTIFACTORY_USER/TOKEN env
vars (§7.2 standardization), so linguica is dead code.
On CI it actively breaks: linguica 0.5 reads ~/.m2/settings.xml at Gradle
configure time and crashes with "Unable to decrypt local Maven settings
credentials" when the runner-preinstalled settings.xml has encrypted server
entries without matching settings-security.xml.
Same root cause as monorepo linguica removal (2026-05-03,
linguica-removal-via-filter-repo.md), variant symptom on CI runner.
rherrick
approved these changes
Jun 29, 2026
mohana-xw
approved these changes
Jul 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
1.10.1-SNAPSHOTbuild-publish.yml/release-cut-rc.yml/release-promote.yml(thin callers ofNrgXnat/xnat-ci-workflows@v1)