diff --git a/.github/promote-images.yml b/.github/promote-images.yml index feea562d6..614de0470 100644 --- a/.github/promote-images.yml +++ b/.github/promote-images.yml @@ -19,7 +19,6 @@ workspace-node-22: "TIMESTAMP_TAG" workspace-node-23: "TIMESTAMP_TAG" workspace-python: "TIMESTAMP_TAG" - workspace-python-3.9: "TIMESTAMP_TAG" workspace-python-3.10: "TIMESTAMP_TAG" workspace-python-3.11: "TIMESTAMP_TAG" workspace-python-3.12: "TIMESTAMP_TAG" diff --git a/.github/sync-containers.yml b/.github/sync-containers.yml index 7ed806bbc..84fa3b6d0 100644 --- a/.github/sync-containers.yml +++ b/.github/sync-containers.yml @@ -16,7 +16,6 @@ sync: - node-22 - node-23 - python - - python-3.9 - python-3.10 - python-3.11 - python-3.12 diff --git a/.gitpod/automations.yaml b/.gitpod/automations.yaml index 3404c27b5..72b31e110 100644 --- a/.gitpod/automations.yaml +++ b/.gitpod/automations.yaml @@ -4,6 +4,7 @@ tasks: description: 'Starts the buildkit daemon for Docker image building' triggeredBy: - postDevcontainerStart + - postEnvironmentStart command: | sudo /usr/bin/buildkitd --debug --config ./buildkitd.toml --group gitpod start-docker-registry: @@ -11,6 +12,7 @@ tasks: description: 'Starts a local Docker registry on port 5000 for dazzle builds' triggeredBy: - postDevcontainerStart + - postEnvironmentStart command: | mkdir -p /workspace/registry docker run -p 5000:5000 --name registry --rm -v /workspace/registry:/var/lib/registry registry:2 @@ -19,6 +21,7 @@ tasks: description: 'Waits for registry to be ready and displays build commands' triggeredBy: - postDevcontainerStart + - postEnvironmentStart - manual command: | # Wait for registry port to be available diff --git a/CHANGELOG.md b/CHANGELOG.md index 43c48617c..1dfdb0fb3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ A curated, chronologically ordered list of notable changes in [Gitpod's default workspace images](https://hub.docker.com/u/gitpod). +## 2026-01-20 + +- Remove `gitpod/workspace-python-3.9` (Python 3.9 reached EOL October 2025) +- Bump `gitpod/workspace-python` and `gitpod/workspace-full` to Python 3.13 +- Bump pyenv to v2.6.20 +- Bump `gitpod/workspace-yugabytedb` images to Python 3.10 + ## 2025-09-30 - Introduce `workspace-java-25` diff --git a/README.md b/README.md index 9aec9e84b..d2f28fea4 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,6 @@ Each contains a set of chunks: a common base and a language / tool. Every image - [`gitpod/workspace-node-22`](https://hub.docker.com/r/gitpod/workspace-node-22) ✅ - [`gitpod/workspace-node-23`](https://hub.docker.com/r/gitpod/workspace-node-23) ✅ - [`gitpod/workspace-python`](https://hub.docker.com/r/gitpod/workspace-python) ✅ -- [`gitpod/workspace-python-3.9`](https://hub.docker.com/r/gitpod/workspace-python-3.9) ✅ - [`gitpod/workspace-python-3.10`](https://hub.docker.com/r/gitpod/workspace-python-3.10) ✅ - [`gitpod/workspace-python-3.11`](https://hub.docker.com/r/gitpod/workspace-python-3.11) ✅ - [`gitpod/workspace-python-3.12`](https://hub.docker.com/r/gitpod/workspace-python-3.12) ✅ diff --git a/build-chunk.sh b/build-chunk.sh index 8ecfb9478..6170bc5e3 100755 --- a/build-chunk.sh +++ b/build-chunk.sh @@ -1,6 +1,6 @@ #!/bin/bash set -euo pipefail -trap ctrl_c EXIT +trap '[[ -f .dazzle.yaml.orig ]] && cp .dazzle.yaml.orig dazzle.yaml' EXIT # shellcheck source=/dev/null source build-common.sh diff --git a/build-combo.sh b/build-combo.sh index 95af15c9c..15e440aba 100755 --- a/build-combo.sh +++ b/build-combo.sh @@ -1,6 +1,6 @@ #! /bin/bash set -eo pipefail -trap ctrl_c EXIT +trap '[[ -f .dazzle.yaml.orig ]] && cp .dazzle.yaml.orig dazzle.yaml' EXIT # shellcheck source=/dev/null source build-common.sh diff --git a/chunks/lang-python/Dockerfile b/chunks/lang-python/Dockerfile index 430ef2bf0..28010934c 100644 --- a/chunks/lang-python/Dockerfile +++ b/chunks/lang-python/Dockerfile @@ -21,8 +21,8 @@ RUN sudo install-packages \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \ # Install PYENV && git clone https://github.com/pyenv/pyenv.git ~/.pyenv \ - # v2.6.10 - && git -C ~/.pyenv checkout a419b003b4615bef05098865bb97e0fbc428095e \ + # v2.6.20 + && git -C ~/.pyenv checkout 3441980e83bb1c5fdb2f1734ae4dab694d10ef71 \ && pyenv install ${PYTHON_VERSION} \ && pyenv global ${PYTHON_VERSION} \ && for exec in global; do printf '%s\n' 'source "$HOME/.gp_pyenv.d/userbase.bash"' >> "$PYENV_ROOT/libexec/pyenv-$exec"; done \ diff --git a/chunks/lang-python/chunk.yaml b/chunks/lang-python/chunk.yaml index 3b3ef09b6..72294add3 100644 --- a/chunks/lang-python/chunk.yaml +++ b/chunks/lang-python/chunk.yaml @@ -1,7 +1,7 @@ variants: - name: "3.13" args: - PYTHON_VERSION: 3.13.8 + PYTHON_VERSION: 3.13.11 - name: "3.12" args: PYTHON_VERSION: 3.12.12 @@ -11,6 +11,3 @@ variants: - name: "3.10" args: PYTHON_VERSION: 3.10.19 - - name: "3.9" - args: - PYTHON_VERSION: 3.9.24 diff --git a/chunks/tool-yugabytedb/Dockerfile b/chunks/tool-yugabytedb/Dockerfile index abde512b5..266e04368 100644 --- a/chunks/tool-yugabytedb/Dockerfile +++ b/chunks/tool-yugabytedb/Dockerfile @@ -24,14 +24,13 @@ RUN curl -sSLo ./yugabyte.tar.gz https://downloads.yugabyte.com/releases/${YB_VE && rm ./yugabyte.tar.gz # python is a required dependency of ycqlsh -# but it doesn't support Python 3.10+ due to https://github.com/yugabyte/cqlsh/issues/11, install 3.9 for now # when building yugabyte combos, if our base is full, related python chunk tests fail # so, use base as the combo ref, add chunks, but ignore Python chunk and install manually ENV PATH="$HOME/.pyenv/bin:$HOME/.pyenv/shims:$PATH" ENV PYENV_ROOT="$HOME/.pyenv" RUN git clone https://github.com/pyenv/pyenv.git ~/.pyenv \ - # v2.6.10 - && git -C ~/.pyenv checkout a419b003b4615bef05098865bb97e0fbc428095e \ + # v2.6.20 + && git -C ~/.pyenv checkout 3441980e83bb1c5fdb2f1734ae4dab694d10ef71 \ && pyenv install ${PYTHON_VERSION} \ && pyenv global ${PYTHON_VERSION} diff --git a/chunks/tool-yugabytedb/chunk.yaml b/chunks/tool-yugabytedb/chunk.yaml index daf1ab7e3..726a0d5dc 100644 --- a/chunks/tool-yugabytedb/chunk.yaml +++ b/chunks/tool-yugabytedb/chunk.yaml @@ -3,14 +3,14 @@ variants: args: YB_VERSION: 2.18.4.2 YB_BUILD: 2 - PYTHON_VERSION: 3.9 + PYTHON_VERSION: 3.10 - name: "2.19" args: YB_VERSION: 2.19.3.0 YB_BUILD: 140 - PYTHON_VERSION: 3.9 + PYTHON_VERSION: 3.10 - name: "2.20" args: YB_VERSION: 2.20.1.3 YB_BUILD: 3 - PYTHON_VERSION: 3.9 + PYTHON_VERSION: 3.10 diff --git a/dazzle.yaml b/dazzle.yaml index 45b65197c..2c8f65abf 100644 --- a/dazzle.yaml +++ b/dazzle.yaml @@ -38,7 +38,7 @@ combiner: - lang-go:1.24 - lang-java:11 - lang-node:22 - - lang-python:3.12 + - lang-python:3.13 - lang-ruby:3.2 - lang-rust:1 - tool-brew @@ -121,11 +121,6 @@ combiner: - base chunks: - lang-python:3.10 - - name: python-3.9 - ref: - - base - chunks: - - lang-python:3.9 - name: ruby-3.1 ref: - base