Skip to content

PRODENG-3471: fix Windows MCR install for FIPS channels#633

Draft
james-nesbitt wants to merge 1 commit into
mainfrom
PRODENG-3471-windows-fips-mcr-version
Draft

PRODENG-3471: fix Windows MCR install for FIPS channels#633
james-nesbitt wants to merge 1 commit into
mainfrom
PRODENG-3471-windows-fips-mcr-version

Conversation

@james-nesbitt
Copy link
Copy Markdown
Collaborator

Jira: https://mirantis.jira.com/browse/PRODENG-3471

Draft — pending confirmation from the MCR release team on whether docker-latest+fips.zip is an intentional omission or a publishing gap. See Jira comment for the full analysis. If MCR adds the alias this PR becomes unnecessary; if FIPS policy requires pinned versions only, this fix is the right approach.

Problem

For FIPS channels (e.g. stable-29.2.1/fips) the Windows MCR installer repo publishes versioned artifacts (docker-29.2.1+fips.zip) but does not publish docker-latest+fips.zip. Launchpad hardcodes DOCKER_VERSION=latest, causing install.ps1 to construct a non-existent URL and exit 1 on all Windows nodes. Linux nodes are unaffected (they use the package manager, not this URL).

Fix

MCRConfig.WindowsInstallerVersion() returns "latest" for all non-FIPS channels (preserving existing behaviour) and extracts the version from the channel string for FIPS channels:

  • stable-29.2.1/fips29.2.1
  • test-29.4.1-rc3/fips29.4.1-rc3
  • stable-29.2latest (unchanged)

InstallMCR in windows.go uses this instead of the hardcoded "latest".

Changes

  • pkg/product/common/config/mcr_config.goWindowsInstallerVersion() method
  • pkg/product/common/config/mcr_config_test.go — 8 table-driven test cases
  • pkg/configurer/windows.go — use WindowsInstallerVersion() instead of "latest"

Note on design

The method name and the FIPS-only guard are a design choice made before the MCR publishing question was fully explored. The approach may change based on the MCR team's response.

For FIPS channels (e.g. stable-29.2.1/fips) the Windows MCR installer
repo publishes versioned artifacts (docker-29.2.1+fips.zip) but does
NOT publish docker-latest+fips.zip. Launchpad was hardcoding
DOCKER_VERSION=latest, causing install.ps1 to construct a non-existent
URL and exit 1 on all Windows nodes. Linux nodes are unaffected.

Add windowsInstallerVersion(channel string) as a package-private helper
in pkg/configurer/windows.go, alongside the existing isExitCode3010
helper. Returns 'latest' for all non-FIPS channels (preserving current
behaviour) and extracts the version from the channel string for FIPS:
  stable-29.2.1/fips   → 29.2.1
  test-29.4.1-rc3/fips → 29.4.1-rc3
  stable-29.2          → latest (unchanged)

InstallMCR uses this instead of the hardcoded 'latest'.

Signed-off-by: James Nesbitt <jnesbitt@mirantis.com>
@james-nesbitt james-nesbitt force-pushed the PRODENG-3471-windows-fips-mcr-version branch from b0e8cc5 to b4dcd13 Compare May 22, 2026 08:22
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