Android release pipeline: Gradle assembleDebug fails on JvmVendorSpec.IBM_SEMERU — foojay-resolver-convention 0.5.0 incompatible with Gradle 9 #278
Labels
No labels
area:auth
area:ci
area:db
area:infra
area:native
area:pwa
area:service
epic
feature
foundation
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
james/carol#278
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptom
release-android.yml(run #701) fails at the Gradle assembleDebug (no signing secrets) step with:Gradle wrapper downloaded
gradle-9.3.1-bin.zip(the version that ships inexpo/template.tgzfor Expo SDK 56 → RN 0.85.3), JDK 21 was on PATH, prebuild finished cleanly, then the build blew up in the configuration phase before any task ran.Root cause
@react-native/gradle-plugin@0.85.3(matching ourreact-native@0.85.3pin) shipssettings.gradle.ktswith:foojay-resolver-convention 0.5.0 references
JvmVendorSpec.IBM_SEMERU. That field was deprecated in Gradle 8.8 and removed in Gradle 9.0 (IBM rebranded Semeru → IBM JDK). The Gradle 9.3.1 wrapper RN ships with no longer exposes the field, so any Gradle configuration that references it fails with the error above.The project's
settings.gradle(fromexpo/template.tgz) doesincludeBuild(reactNativeGradlePlugin), which means the gradle-plugin's ownsettings.gradle.ktsis processed by the same Gradle 9.3.1 instance — and that's where IBM_SEMERU dies.Upstream RN already fixed this in
@react-native/gradle-plugin@0.86.0by bumping foojay to1.0.0. The fix didn't backport to the 0.85.x line.Workflow + lines
.forgejo/workflows/release-android.ymllines 209-212: the failing step (./gradlew --no-daemon :app:assembleDebug)node_modules/@react-native/gradle-plugin/settings.gradle.ktsline 16 inreact-native@0.85.3's gradle-plugin shipped inside the pnpm store. Not a file we own.Fix shape
Apply a
pnpm patchagainst@react-native/gradle-plugin@0.85.3that bumpsfoojay-resolver-conventionfrom0.5.0to1.0.0— exactly the change upstream RN made in 0.86.0. One-line patch inpatches/, registered in rootpackage.jsonunderpnpm.patchedDependencies. CI'spnpm install --frozen-lockfilewill apply it on every run.Acceptance
The next release-tag push reaches the
Gradle assembleRelease + bundleRelease(orassembleDebug) step and either succeeds or fails at a later, unrelated stage. The IBM_SEMERU error is gone.Out of scope
Bumping RN itself (0.85.3 → 0.86.x) — that's a much bigger lift and not what's blocking the release build today.