This repository contains a devcontainer tailored towards modern (embedded) C++ development.
This repository is under active development; see pulse for more details.
Two devcontainers are published towards the GitHub Container Registry:
- amp-devcontainer; the base container including all tools mentioned below
- amp-devcontainer-vscode; as above, but including a full Visual Studio Code configuration that is compatible with GitHub Codespaces
The amp-devcontainer built from this repository contains compilers and tools to facilitate modern (embedded) C++ development. The amp-devcontainer includes support for host- and cross-compilation using gcc, arm-gcc and clang compilers. Next to the compilers there is support for code-coverage measurement, mutation testing (using mull), fuzzing (using libfuzzer) and static analysis (clang-format, clang-tidy, clangd, include-what-you-use). The default build system is set up to use CMake, Ninja and CCache.
For the full list of all included tools and tool versions see the Dependency Graph, the SBOM published with a release, or the SBOM attached to the image.
The amp-devcontainer-vscode is a, slightly more, opinionated variant that can be used in Visual Studio Code or GitHub Codespaces without any additional configuration. All included tools are set-up and necessary plug-ins will be installed at container start. This behavior is implemented by appending devcontainer metadata to an image label according to the specifications. It is possible to override, amend or change the options following this merge logic.
The container images are signed with SigStore Cosign using a keyless signing method.
The signature can be verified with the following command (using Docker), verifying that the image is actually signed by the GitHub CI system:
amp-devcontainer
docker run --rm gcr.io/projectsigstore/cosign verify ghcr.io/philips-software/amp-devcontainer --certificate-oidc-issuer https://token.actions.githubusercontent.com --certificate-identity-regexp https://github.com/philips-software/amp-devcontainer
amp-devcontainer-vscode
docker run --rm gcr.io/projectsigstore/cosign verify ghcr.io/philips-software/amp-devcontainer-vscode --certificate-oidc-issuer https://token.actions.githubusercontent.com --certificate-identity-regexp https://github.com/philips-software/amp-devcontainer
The resulting containers can be used in a .devcontainer.json
file or in a .devcontainer
folder.
Note
While the following examples use the latest
tag, it is recommended to pin to a specific version. Or better yet, a specific SHA.
.devcontainer/devcontainer.json or .devcontainer.json
{
"image": "ghcr.io/philips-software/amp-devcontainer:latest"
}
.devcontainer/devcontainer.json or .devcontainer.json
{
"image": "ghcr.io/philips-software/amp-devcontainer-vscode:latest"
}
This project uses a code of conduct to define expected conduct in our community. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the repository administrators by using the Report content functionality of GitHub.
See the changelog for more info on what's been changed.
This project uses Semantic Versioning 2.0.0 and Conventional Commits 1.0.0 please see the contributing guideline for more information.
The container can be built and tested locally by importing this repository in VS Code with the Remote Containers plug-in installed. As a prerequisite Docker needs to be installed on the host system. Alternatively a GitHub Codespace can be started.
A test task is available to run the included bats
tests. Choose Tasks: Run Test Task
from the command pallette (Ctrl + Shift + P).
If you find a vulnerability, please report it to us! See security for more information.
See license