Skip to content

Update base image to Alpine 3.24 and track it with Renovate - #2810

Open
berendt wants to merge 1 commit into
mainfrom
update-alpine-3.24
Open

berendt wants to merge 1 commit into
mainfrom
update-alpine-3.24

Conversation

@berendt

@berendt berendt commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

The container image is still built on Alpine 3.21, which no longer gets new Python builds (python:3.13-alpine3.21 was last updated in December 2025). This moves the base image to Alpine 3.24, the current Alpine release, and lets Renovate keep it up to date from now on.

Base image

  • ALPINE_VERSION: 3.21 → 3.24
  • PYTHON_VERSION: 3.13.3 → 3.13.16. There is no python:3.13.3-alpine3.24 tag, so the Python patch version has to move as well. The minor version stays at 3.13.

Every package installed with apk is available in Alpine 3.24. openssh-client and procps are still resolved through the packages that provide them (openssh-client-default, procps-ng).

Renovate

Renovate already detects registry.osism.tech/dockerhub/python 3.13.3-alpine3.21 (see the Dependency Dashboard) but never proposed an update. The Harbor proxy cache behind registry.osism.tech/dockerhub returns an empty tag list, so the lookup finds nothing newer.

.github/renovate.json now has a custom regex manager that:

  • reads PYTHON_VERSION and ALPINE_VERSION as one tag (3.13.16-alpine3.24) and writes both lines back,
  • looks the tag up on Docker Hub (python) instead of the proxy cache,
  • uses regex versioning, so the Alpine version counts as part of the version. With the default docker versioning, -alpine3.24 would be a fixed suffix and Alpine releases would never be proposed.

The dockerfile manager entry for the image is disabled so the image isn't tracked twice. separateMinorPatch keeps Python patch and Alpine updates in their own PR, so an unmerged Python minor bump doesn't hold them back.

A local renovate --platform=local --dry-run=lookup run confirms the behaviour:

Containerfile Proposed updates
3.13.16 / 3.24 (this PR) minor: 3.15.0-alpine3.24
3.13.14 / 3.23 (simulated) patch: 3.13.16-alpine3.24 (branch …-python-3.13.x), minor: 3.15.0-alpine3.24 (branch …-python-3.x)

renovate-config-validator passes. Renovate's template engine renders the replacement as ARG PYTHON_VERSION=3.13.16\nARG ALPINE_VERSION=3.24\n, which reads back as the new value.

After this is merged, Renovate will open a PR for Python 3.15 (3.15.0-alpine3.24). If Python minor upgrades of the image should stay manual, an allowedVersions rule can pin them to 3.13.

🤖 Generated with Claude Code

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!

Sourcery assessment

Approved.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

The container image was still built on Alpine 3.21, which no longer
receives new Python builds: python:3.13-alpine3.21 was last updated in
December 2025. Move the base image to Alpine 3.24, the current Alpine
release.

There is no python:3.13.3-alpine3.24 tag, so PYTHON_VERSION moves from
3.13.3 to 3.13.16, the latest 3.13 patch release published for Alpine
3.24. The Python minor version stays at 3.13.

All packages installed with apk are available in Alpine 3.24;
openssh-client and procps are still resolved through the packages that
provide them (openssh-client-default and procps-ng).

Renovate never proposed an update for the base image. The dockerfile
manager detects registry.osism.tech/dockerhub/python, but the Harbor
proxy cache behind it returns an empty tag list, so the lookup finds
nothing newer. Add a custom regex manager that reads PYTHON_VERSION and
ALPINE_VERSION as one python:<version>-alpine<version> tag, looks it
up on Docker Hub and writes both lines back. Regex versioning treats
the Alpine version as part of the version instead of a fixed suffix,
so Alpine releases are picked up as well. The dockerfile manager entry
for the image is disabled, and separateMinorPatch keeps Python patch
and Alpine updates apart from Python minor updates so they are not
held back by an unmerged minor bump.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Christian Berendt <berendt@osism.tech>
@berendt
berendt force-pushed the update-alpine-3.24 branch from a6e8003 to 2415771 Compare October 21, 2026 08:50
@berendt berendt changed the title Update base image to Alpine 3.24 Update base image to Alpine 3.24 and track it with Renovate Oct 21, 2026
@berendt berendt moved this from New to Ready for review in Human Board Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Ready for review

Development

Successfully merging this pull request may close these issues.

3 participants