Skip to content

build(docker): run the container image on Python 3.15 - #1538

Merged
jkreileder merged 1 commit into
mainfrom
build/docker-python-3.15
Oct 14, 2026
Merged

jkreileder merged 1 commit into
mainfrom
build/docker-python-3.15

Conversation

@jkreileder

@jkreileder jkreileder commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Summary

This is the follow-up to #1533, now that the final Python 3.15 images are on Docker Hub.

Images

  • Builder and final images move to python:3.15.0-trixie and python:3.15.0-alpine3.24.
  • The astral/uv tool images move to 0.13.1-python3.15-{trixie,alpine3.23}. uv publishes no alpine3.24 variant, and that stage only supplies the uv binary.
  • I checked all four digests against the registry with crane digest. Both uv images report PYTHON_VERSION=3.15.0.

Grype ignores (tracked in #1412)

Security

The container image no longer ships the three CPython CVEs above, which affect the v1.4.7 image's 3.14.8 interpreter. There is no token, secret or firewall-rule impact.

Testing

Summary by CodeRabbit

  • Updates
    • The container image now runs Python 3.15.0 instead of Python 3.14.8, including fixes for three listed CVEs affecting the previous version. The Alpine version remains unchanged.

Move the builder and final images to python:3.15.0 (trixie and
alpine3.24) and the astral/uv tool images to 0.13.1-python3.15. All
pins were checked against the registry with crane.

Python 3.15.0 carries the fixes for CVE-2026-87910 (tarfile,
python/cpython#157309), CVE-2025-15367 (poplib, #143924) and
CVE-2026-12345 (tempfile, #158431), so their .grype.yaml entries go.

Grype still reports CVE-2025-15367 against 3.15.0: NVD's bound is
< 3.15.0a6 and grype's generic version ordering ranks the 3.15.0 final
before that alpha. Keep a single ignore for it, scoped to python
3.15.0, until CI's grype includes anchore/grype#3776.

Signed-off-by: Jürgen Kreileder <jk@blackdown.de>
@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e7241890-5f49-43d4-a0dc-93da7222a3f2
📥 Commits

Reviewing files that changed from the base of the PR and between f06c621 and a96e09e.

📒 Files selected for processing: 3
  • .grype.yaml
  • CHANGELOG.md
  • Dockerfile

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⏰ Context from checks skipped due to timeout: 17
  • GitHub Check: github-advanced-security
  • GitHub Check: Analyze Python code with CodeQL (python, 3.14)
  • GitHub Check: Analyze Python code with CodeQL (python, 3.13)
  • GitHub Check: Analyze Python code with CodeQL (python, 3.15)
  • GitHub Check: Analyze Python code with CodeQL (python, 3.12)
  • GitHub Check: Analyze Python code with CodeQL (python, 3.11)
  • GitHub Check: Docker build / Build
  • GitHub Check: Test (3.14)
  • GitHub Check: Analyze GitHub actions code with CodeQL
  • GitHub Check: Test (3.15)
  • GitHub Check: Package check
  • GitHub Check: Test (3.11)
  • GitHub Check: Test (3.13)
  • GitHub Check: Secret scan
  • GitHub Check: Test (3.12)
  • GitHub Check: Run pre-commit hooks
  • GitHub Check: StepSecurity Harden-Runner
🧰 Additional context used
📚 Code guidelines: 1
.github/copilot-instructions.md — auto-discovered
📓 Path-based instructions: 1
Source excerpt: Markdown style: When creating or editing Markdown files, aim for a maximum line width of 100 characters and wrap prose at sentence boundaries where practical.

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Files:

  • CHANGELOG.md
🔇 Additional comments: 3
Dockerfile: 1

4-5: LGTM!

Also applies to: 7-7, 37-37

.grype.yaml: 1

6-12: LGTM!

Also applies to: 16-16

CHANGELOG.md: 1

7-9: LGTM!

Also applies to: 13-13

Walkthrough

The builder, uv tool, and final Alpine images move to Python 3.15. The Grype ignore list and v1.5.0 changelog are updated to reflect the image version and related vulnerability information.

Changes

Python 3.15 image update

Layer / File(s) Summary
Update Python base images
Dockerfile
The uv tool and builder images move from Python 3.14 to Python 3.15. The final Alpine image moves from Python 3.14.8 to Python 3.15.0. The pinned image digests are updated.
Update vulnerability and release records
.grype.yaml, CHANGELOG.md
The Grype ignore list retains only CVE-2025-15367, scoped to the Python binary at version 3.15.0. The v1.5.0 changelog records the Python 3.15.0 image and lists three CVEs as fixed relative to the v1.4.7 image. It also updates the uv version reference and removes the note that the container still runs Python 3.14.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Merge Risk: ⚪ Minimal · up to a96e0

The Python 3.15 image update has no identified issue requiring resolution before merge.

Pre-merge checks: Passed 5
Passed Passed checks: 5 passed
Check name Status Explanation
Title check Passed The title clearly and concisely describes the primary change: running the container image on Python 3.15.
Description check Passed The description includes complete Summary, Security, and Testing sections. It explains the image updates, Grype ignore changes, security impact, validation steps, and tracked issues.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

I’m a rabbit with a carrot to spare,
Python 3.15 is now in the air.
The image notes list what moved along,
One scoped ignore keeps its place in the song.
I hop through the changelog, then nibble with care.

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown

Test Results

  5 files  ±0    5 suites  ±0   10s ⏱️ ±0s
150 tests ±0  150 ✅ ±0  0 💤 ±0  0 ❌ ±0 
750 runs  ±0  750 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit a96e09e. ± Comparison against base commit f06c621.

@codecov

codecov Bot commented Oct 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (f06c621) to head (a96e09e).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #1538   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            8         8           
  Lines          268       268           
  Branches        31        31           
=========================================
  Hits           268       268           
Flag Coverage Δ
python-3.11 100.00% <ø> (ø)
python-3.12 100.00% <ø> (ø)
python-3.13 100.00% <ø> (ø)
python-3.14 100.00% <ø> (ø)
python-3.15 100.00% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

@github-actions

Copy link
Copy Markdown

🔍 Vulnerabilities of jkreileder/cf-ips-to-hcloud-fw:pr-1538

📦 Image Reference jkreileder/cf-ips-to-hcloud-fw:pr-1538
digestsha256:c1bfa9322e8c9ec34001c3b269851f7059b4101f783331e374960e8011528a86
vulnerabilitiescritical: 0 high: 0 medium: 0 low: 0
platformlinux/amd64
size28 MB
packages62
📦 Base Image python:3-alpine
also known as
  • 3-alpine3.24
  • 3.15-alpine
  • 3.15-alpine3.24
  • 3.15.0-alpine
  • 3.15.0-alpine3.24
  • alpine
  • alpine3.24
digestsha256:9ab1d4f3e45b370553a5b665766c5fd3c595d279fed7fc867d7ed18d62595fd4
vulnerabilitiescritical: 0 high: 5 medium: 2 low: 0

@github-actions

Copy link
Copy Markdown

Recommended fixes for image jkreileder/cf-ips-to-hcloud-fw:pr-1538

Base image is python:3-alpine

Name3.15.0-alpine3.24
Digestsha256:9ab1d4f3e45b370553a5b665766c5fd3c595d279fed7fc867d7ed18d62595fd4
Vulnerabilitiescritical: 0 high: 5 medium: 2 low: 0
Pushed1 day ago
Size21 MB
Packages59
Flavoralpine
OS3.24
Runtime3.15.0
The base image is also available under the supported tag(s): 3-alpine3.24, 3.15-alpine, 3.15-alpine3.24, 3.15.0-alpine, 3.15.0-alpine3.24, alpine, alpine3.24

Refresh base image

Rebuild the image using a newer base image version. Updating this may result in breaking changes.

✅ This image version is up to date.

Change base image

✅ There are no tag recommendations at this time.

@github-actions

Copy link
Copy Markdown

Overview

Image reference jkreileder/cf-ips-to-hcloud-fw:1 quay.io/jkreileder/cf-ips-to-hcloud-fw:pr-1538
- digest 7044a8a30b87 c1bfa9322e8c
- tag 1 pr-1538
- provenance d2dc7be f3725b4
- vulnerabilities critical: 0 high: 0 medium: 0 low: 0 critical: 0 high: 0 medium: 0 low: 0
- platform linux/amd64 linux/amd64
- size 29 MB 28 MB (-164 kB)
- packages 62 62
Base Image python:3.14.8-alpine3.24 python:3-alpine
also known as:
• 3-alpine3.24
• 3.15-alpine
• 3.15-alpine3.24
• 3.15.0-alpine
• 3.15.0-alpine3.24
• alpine
• alpine3.24
- vulnerabilities critical: 0 high: 5 medium: 2 low: 0
Environment Variables (2 changes)
  • ± 2 changed
  • 3 unchanged
 PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
 PYTHONDONTWRITEBYTECODE=1
 PYTHONFAULTHANDLER=1
-PYTHON_SHA256=c2215904f02b175596dc49351585104f4bc20341e1c47378b26a2c274360ce73
+PYTHON_SHA256=ba4bed1ba346b916890b76d9e320451420aa69f6408997d33c66482eeae3d575
-PYTHON_VERSION=3.14.8
+PYTHON_VERSION=3.15.0
Labels (3 changes)
  • ± 3 changed
  • 5 unchanged
-org.opencontainers.image.created=2026-10-07T17:57:54.745Z
+org.opencontainers.image.created=2026-10-14T16:32:16.190Z
 org.opencontainers.image.description=Update Hetzner Cloud firewall rules with current Cloudflare IP ranges
 org.opencontainers.image.licenses=MIT
-org.opencontainers.image.revision=d2dc7be89c4f19368ab8411839e178b20c551006
+org.opencontainers.image.revision=f3725b4247bace09cbdfa1fd31e0a627cf54a105
 org.opencontainers.image.source=https://github.com/jkreileder/cf-ips-to-hcloud-fw
 org.opencontainers.image.title=cf-ips-to-hcloud-fw
 org.opencontainers.image.url=https://github.com/jkreileder/cf-ips-to-hcloud-fw
-org.opencontainers.image.version=1.4.7
+org.opencontainers.image.version=pr-1538
Policies (0 improved, 1 worsened)

Health score: jkreileder/cf-ips-to-hcloud-fw:1 A (94%) → quay.io/jkreileder/cf-ips-to-hcloud-fw:pr-1538 B (78%)

Policy Name jkreileder/cf-ips-to-hcloud-fw:1 quay.io/jkreileder/cf-ips-to-hcloud-fw:pr-1538 Change Standing
Default non-root user ✅ ✅ No Change
No copyleft licenses ⚠️ 21 ⚠️ 21 No Change
No fixable critical or high vulnerabilities ✅ ✅ No Change
No high-profile vulnerabilities ✅ ✅ No Change
No outdated base images ✅ ✅ No Change
No unapproved base images ✅ ✅ No Change
Supply chain attestations ✅ ⚠️ 2 +2 Worsened
Packages and Vulnerabilities (5 package changes and 0 vulnerability changes)
  • ♾️ 5 packages changed
  • 57 packages unchanged
Changes for packages of type apk (1 changes)
Package Version
jkreileder/cf-ips-to-hcloud-fw:1
Version
quay.io/jkreileder/cf-ips-to-hcloud-fw:pr-1538
♾️ .python-rundeps 20261001.213612 20261012.223009
Changes for packages of type generic (1 changes)
Package Version
jkreileder/cf-ips-to-hcloud-fw:1
Version
quay.io/jkreileder/cf-ips-to-hcloud-fw:pr-1538
♾️ python 3.14.8 3.15.0
Changes for packages of type pypi (3 changes)
Package Version
jkreileder/cf-ips-to-hcloud-fw:1
Version
quay.io/jkreileder/cf-ips-to-hcloud-fw:pr-1538
♾️ cf-ips-to-hcloud-fw 1.4.7 1.5.0.dev1
♾️ pydantic 2.13.5 2.14.0
♾️ pydantic-core 2.46.5 2.50.0

@jkreileder
jkreileder merged commit 6d8690d into main Oct 14, 2026
54 checks passed
@jkreileder
jkreileder deleted the build/docker-python-3.15 branch October 14, 2026 16:36
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