Skip to content

Install bundled native installers from the offline archive - #790

Merged
SaladDay merged 1 commit into
mainfrom
install-bundled-native-installers-offline
Oct 20, 2026
Merged

SaladDay merged 1 commit into
mainfrom
install-bundled-native-installers-offline

Conversation

@SaladDay

@SaladDay SaladDay commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

The Core image carries only native-installers/catalog.json. Without a release base URL the catalog has no download URLs, so Core requires the archives at /opt/oac/native-installers/<platform>.tar.gz. The offline archive ships them, but install.py never installed them:

  • A checkout distribution built with OAC_NATIVE_INSTALLER_BUILD_DIR (Develop → Install a checkout without publishing a release) left Core in a restart loop: open /opt/oac/native-installers/linux-amd64.tar.gz: no such file or directory.
  • An offline release installation carried ~865 MiB of native installers that nothing served; self-hosted machines were redirected to GitHub instead.

Change

  • install.py copies the bundle's native-installers/ into <installation>/native-installers/<commit>, makes it readable by Core, binds it read-only at /opt/oac/native-installers, and removes other releases' copies after a successful start.
  • oac upgrade drops that bind and directory together with the existing /node-payload bind when an offline installation moves to a published release.
  • Maintainer guide (EN/zh) states where the offline copies go.

Validation

  • python3 -m unittest deploy/test_install_source.py (13 tests, new: install + upgrade prune)
  • go test ./services/core/cmd/oac/ and go vet
  • Live: a 13cbbf8 offline bundle with the native catalog on the mx test host. Before the change Core restarted in a loop; after rerunning the patched install.py, Core is healthy with the archives bound.

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

The Core image carries only the native installer catalog. install.py
never copied the offline archive's native installers into the
installation, so a source build with a catalog left Core failing to
start, and offline releases redirected self-hosted machines to GitHub.

install.py now copies them into native-installers/<commit>, binds that
directory into Core and removes other releases' copies after a
successful start. oac upgrade drops the bind and the copy together with
the node payload bind.
@SaladDay
SaladDay merged commit f80365a into main Oct 20, 2026
22 checks passed
@SaladDay
SaladDay deleted the install-bundled-native-installers-offline branch October 20, 2026 05:03
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