From c0426c1b3500144a8a0003e9ddc7b39d22375ea6 Mon Sep 17 00:00:00 2001 From: James Henry Date: Fri, 25 Apr 2025 17:13:37 +0400 Subject: [PATCH] fix(release): ensure versionData is always populated even when no bumps (#30866) --- .../version/release-group-processor.spec.ts | 61 +++++++++++++++++++ .../version/release-group-processor.ts | 9 +++ 2 files changed, 70 insertions(+) diff --git a/packages/nx/src/command-line/release/version/release-group-processor.spec.ts b/packages/nx/src/command-line/release/version/release-group-processor.spec.ts index 8e6f560c87..6a7d492dc0 100644 --- a/packages/nx/src/command-line/release/version/release-group-processor.spec.ts +++ b/packages/nx/src/command-line/release/version/release-group-processor.spec.ts @@ -1673,4 +1673,65 @@ describe('ReleaseGroupProcessor', () => { ); }); }); + + describe('versionData', () => { + it('should populate versionData even when projects are not versioned', async () => { + const { + nxReleaseConfig, + projectGraph, + releaseGroups, + releaseGroupToFilteredProjects, + filters, + } = await createNxReleaseConfigAndPopulateWorkspace( + tree, + ` + __default__ ({ "projectsRelationship": "independent" }): + - libtest1@4.5.0 [js] + - my-nest-app@1.0.0 [js] + `, + { + version: { + conventionalCommits: true, + }, + }, + mockResolveCurrentVersion + ); + + const processor = new ReleaseGroupProcessor( + tree, + projectGraph, + nxReleaseConfig, + releaseGroups, + releaseGroupToFilteredProjects, + { + dryRun: false, + verbose: false, + firstRelease: false, + preid: undefined, + filters, + } + ); + await processor.init(); + + mockDeriveSpecifierFromConventionalCommits.mockImplementation( + () => 'none' + ); + await processor.processGroups(); + + expect(processor.getVersionData()).toMatchInlineSnapshot(` + { + "libtest1": { + "currentVersion": "4.5.0", + "dependentProjects": [], + "newVersion": null, + }, + "my-nest-app": { + "currentVersion": "1.0.0", + "dependentProjects": [], + "newVersion": null, + }, + } + `); + }); + }); }); diff --git a/packages/nx/src/command-line/release/version/release-group-processor.ts b/packages/nx/src/command-line/release/version/release-group-processor.ts index 2f8b00737a..2bf4918241 100644 --- a/packages/nx/src/command-line/release/version/release-group-processor.ts +++ b/packages/nx/src/command-line/release/version/release-group-processor.ts @@ -360,6 +360,15 @@ export class ReleaseGroupProcessor { ); this.cachedCurrentVersions.set(projectName, currentVersion); } + + // Ensure that there is an entry in versionData for each project being processed, even if they don't end up being bumped + for (const projectName of this.allProjectsToProcess) { + this.versionData.set(projectName, { + currentVersion: this.getCurrentCachedVersionForProject(projectName), + newVersion: null, + dependentProjects: this.getOriginalDependentProjects(projectName), + }); + } } // Build the dependency relationships between groups