From 2f66ddd729c70a2c37a09ac4c7c73f8a3ce73ed3 Mon Sep 17 00:00:00 2001 From: Kai Schwarz Date: Sat, 29 Aug 2026 16:24:47 +0200 Subject: [PATCH] build(devcontainer): migrate onto the shared devbase Feature MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The zsh prompt configuration, commitizen setup, pnpm bootstrap, shell history symlink and the common CLI packages now come from the devbase Feature, which also brings Node LTS, the GitHub CLI and the Claude Code CLI as its own dependencies. post-create.sh did all of that by hand — cloning powerlevel10k and zsh-autosuggestions on every create — and is gone. The JDK moves out of the language image and into the java Feature at 21, the LTS the image supplied; pom.xml still compiles to 17, so the runtime is deliberately ahead of the language level. Maven comes with it. devcontainer-lock.json is deleted rather than edited: it pinned the node, git and java Features as the frame declared them before. The first rebuild resolves a fresh one, which should then be committed. RSRMID-3019 --- .devcontainer/.dockerignore | 6 ++++++ .devcontainer/Dockerfile | 16 ++++++++++++++++ .devcontainer/env-info.conf | 13 +++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 .devcontainer/.dockerignore create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/env-info.conf diff --git a/.devcontainer/.dockerignore b/.devcontainer/.dockerignore new file mode 100644 index 00000000..0e1e95c1 --- /dev/null +++ b/.devcontainer/.dockerignore @@ -0,0 +1,6 @@ +# The devcontainer metadata is read by the CLI, not by the image build, so +# keeping it out of the build context avoids a needless cache invalidation on +# every edit to devcontainer.json. +devcontainer.json +devcontainer-lock.json +env-info.conf diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000..47b4d533 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,16 @@ +# Development image for this repository. +# +# Deliberately thin. The zsh configuration (prompt, autosuggestions) and +# commitizen setup that used to be cloned and copied in from post-create.sh are +# now in the devbase Feature: +# https://github.com/centralnicgroup-opensource/rtldev-middleware-devcontainer-features +# +# The JDK and Maven come from the java devcontainer Feature, declared in +# devcontainer.json, so this file does not pin a language image either. + +FROM mcr.microsoft.com/devcontainers/base:2-ubuntu-24.04 + +# No ENV DEBIAN_FRONTEND here on purpose: set at image level it persists into the +# running container, so an interactive `apt` in a shell session also loses its +# frontend. A layer that needs it sets it for itself. +ENV TERM=xterm-256color diff --git a/.devcontainer/env-info.conf b/.devcontainer/env-info.conf new file mode 100644 index 00000000..b0ec3e3b --- /dev/null +++ b/.devcontainer/env-info.conf @@ -0,0 +1,13 @@ +# Drives the on-attach banner the devbase Feature prints. Sourced as shell, so +# quote values containing spaces. Every setting is optional; see +# https://github.com/centralnicgroup-opensource/rtldev-middleware-devcontainer-features + +TITLE="JAVA-SDK - development environment" + +SHOW_JAVA=true +SHOW_NODE=auto + +# Node is here for the release tooling only, not for the product code. +NODE_DEPS="semantic-release" + +EXTRA_ROWS="Maven|mvn --version|3"