Unpin apt/apk package versions to fix periodic build failures#188
Merged
Conversation
Ubuntu/Alpine archives keep only the latest build of each package, so exact pins like curl=8.5.0-2ubuntu10.9 get rotated out on each security update and break the build. The `apt-get upgrade`/`apk upgrade` steps already pull latest-patched versions, so the pins provided no reproducibility or supply-chain benefit (signed repo metadata is the real control) -- they only caused the failures. Removing them also eliminates the misleading buried "Version not found" error. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
labkey-jony
approved these changes
Jul 1, 2026
labkey-gokhano
approved these changes
Jul 1, 2026
labkey-willm
added a commit
that referenced
this pull request
Jul 2, 2026
…189) Ubuntu/Alpine archives keep only the latest build of each package, so exact pins like curl=8.5.0-2ubuntu10.9 get rotated out on each security update and break the build. The `apt-get upgrade`/`apk upgrade` steps already pull latest-patched versions, so the pins provided no reproducibility or supply-chain benefit (signed repo metadata is the real control) -- they only caused the failures. Removing them also eliminates the misleading buried "Version not found" error. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Problem
The nightly builds (e.g. LimsStarterContainerNightly) periodically fail because the
Dockerfilepins exact OS package versions likecurl=8.5.0-2ubuntu10.9. Ubuntu'snoblearchive (and Alpine's) keeps only the latest build of each package — when a security update bumps a package, the old exact version is deleted from the repo, soapt-get install curl=8.5.0-2ubuntu10.9fails with a one-lineE: Version '…' was not foundburied deep in the build log.Why removing the pins is the right fix
RUNrunsapt-get -yq upgrade/apk upgradeimmediately after the pinned installs, which bump those same packages to latest anyway. So the running image was already on latest-patched versions, not the pinned ones — the pins provided no reproducibility.apt-get upgrade(kept) is the actual CVE-patching mechanism for the whole base-image package set — important for the xeol/dockle scans.Removing the pins also eliminates the misleading buried "Version not found" error entirely.
Changes
Dockerfileonly — stripped the=<version>suffix from the apt (curl,gettext-base,unzip,wget+ DEBUG-only set) and apk (gettext,unzip,curl,tree) packages.postgresql-client-16keeps its name (the-16is the Postgres major, not a pin). Kept bothupgradesteps.Verification
hadolint— cleanLABKEY_DISTRIBUTION=lims_starter make build(noble) — ✅DEBUG=1 LABKEY_DISTRIBUTION=community make build— ✅ (extra apt pkgs)FROM_TAG=25-jre-alpine make build— ✅ (apk path)make test(smoke) — ✅smoke test succeeded(LabKey booted, curl healthcheck OK)🤖 Generated with Claude Code