new file mode 100644
@@ -0,0 +1,11 @@
+# SPDX-FileCopyrightText: 2024-2025 Mark Jonas <toertel@gmail.com>
+#
+# SPDX-License-Identifier: MIT
+
+FROM ubuntu:24.04
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+# Install SWUpdate build dependencies
+COPY ./ci/setup.sh /tmp
+RUN chmod +x /tmp/setup.sh && /tmp/setup.sh
new file mode 100644
@@ -0,0 +1,11 @@
+// SPDX-FileCopyrightText: 2024-2025 Mark Jonas <toertel@gmail.com>
+//
+// SPDX-License-Identifier: MIT
+
+{
+ "name": "SWUpdate Development Container",
+ "build": {
+ "dockerfile": "Containerfile",
+ "context": ".."
+ }
+}
@@ -127,6 +127,9 @@ web-app/swupdate-www.tar.gz
!.gitlab-ci.yml
!.github
+# devcontainer
+!.devcontainer/
+
# swupdateclient
Pipfile
Pipfile.lock
new file mode 100644
@@ -0,0 +1,58 @@
+<!--
+SPDX-FileCopyrightText: 2024-2025 Mark Jonas <toertel@gmail.com>
+
+SPDX-License-Identifier: MIT
+-->
+
+# Introduction
+
+The SWUpdate devcontainer is a Podman-based development environment that
+ensures consistent tooling and settings across different machines. It uses
+configuration files to specify the environment setup and automatically builds
+the required development workspace when opened in compatible IDEs like VS Code.
+
+The devcontainer requires Podman because it expects to be run unprivileged.
+That is, the root user inside the container is expected to read and write
+files with the uid and gid of the user who started the container.
+
+The devcontainer supports compiling and running SWUpdate for x86-64 targets.
+
+# Setup
+
+## VS Code
+
+You have to use *Podman* instead of *Docker* by adding the following to the
+VS Code user settings. Please note that changing this setting might break other
+devcontainers you are using which explicitly require Docker. [^1]
+
+[^1]: It is an open backlog item of VS Code to change *dev.containers.dockerPath*
+into a workspace setting. See https://github.com/microsoft/vscode-remote-release/issues/8817
+
+```json
+"dev.containers.dockerPath": "podman"
+```
+
+You can change that setting either in VS Code itself (press `Ctrl+,`) or in
+the configuration file. VS Code user settings are stored in a *settings.json*
+file, with different locations depending on your operating system:
+
+**Linux**: `$HOME/.config/Code/User/settings.json`
+
+**macOS**: `$HOME/Library/Application Support/Code/User/settings.json`
+
+**Windows**: `%APPDATA%\Code\User\settings.json`
+
+# Usage
+
+## Compile and run tests
+
+You can compile and run all SWUpdate tests inside the devcontainer. This is very
+helpful during development and highly recommended before sending a patch to the
+mailing list.
+
+To compile and run all SWUpdate tests, execute the following command using a
+devcontainer terminal.
+
+```sh
+ci/test-configs.sh
+```