You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This repository contains devcontainers tailored towards modern software development.
4
+
The containers try to be as "batteries included" as possible without being overly opinionated, and are usable for both local development and continuous integration.
5
+
All containers are multi-platform and can be used on x64 (x86-64) and arm64 hardware on an operating system that supports an [OCI](https://opencontainers.org/) compatible container engine.
6
+
This includes Windows, Linux, and macOS on both Intel and Apple silicon.
7
+
8
+
The devcontainers include modern, up-to-date, tooling for C++ and Rust development, and are fully compatible with GitHub Codespaces and Visual Studio Code.
9
+
The containers are versioned using [Semantic Versioning](https://semver.org/) and are designed with supply-chain security in mind.
10
+
They can be used with [Dependabot](https://dependabot.com/) to keep dependencies up to date.
11
+
12
+
The container images should provide a secure foundation for regulated software development in e.g. the medical, automotive, aviation, and railroad domains.
13
+
14
+
## Key Features
15
+
16
+
The key features of this project are described in the top-level README.md, read them from there to prevent duplication and mismatches.
17
+
18
+
## Folder Structure
19
+
20
+
The folder structure of amp-devcontainer is described below, adhere to the existing folder structure.
21
+
22
+
-`/.devcontainer`: Contains the source code for the container flavors with a top-level devcontainer.json file to enable `clone in container volume` of this repository.
23
+
-`/.devcontainer/[flavor]`: Contains the Dockerfile and configuration for each container flavor (e.g., `cpp`, `rust`).
24
+
-`/.devcontainer/[flavor]-test`: Contains a devcontainer.json file for testing the container flavor.
25
+
-`/.github`: Contains the GitHub workflows for CI/CD, linter configuration, issue templates and re-usable actions.
26
+
-`/test/[flavor]`: Contains [Bats](https://bats-core.readthedocs.io/en/stable/) integration- and Playwright verification tests for the containers.
Copy file name to clipboardExpand all lines: README.md
+35-43Lines changed: 35 additions & 43 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,6 +29,7 @@ This repository contains [devcontainers](https://docs.github.com/en/codespaces/s
29
29
### Key Features
30
30
31
31
-**Batteries Included** 🔋: Pre-configured tools for local development and continuous integration.
32
+
-**Developer Experience** 👩💻: Minimal set-up time and maximal shift-left.
32
33
-**Multi-platform Support** ⚙️: Compatible with x64 and arm64 hardware on Windows, Linux, and macOS.
33
34
-**Image Flavors** 🍨: Dedicated containers for C++ and Rust development.
34
35
-**IDE Integration** 💻: Fully compatible with GitHub Codespaces and VS Code.
@@ -38,7 +39,8 @@ This repository contains [devcontainers](https://docs.github.com/en/codespaces/s
38
39
39
40
The containers try to be as "batteries included" as possible without being overly opinionated, and are usable for both local development and continuous integration.
40
41
41
-
All containers are multi-platform and can be used on x64 (x86-64) and arm64 hardware on an operating system that supports an [OCI](https://opencontainers.org/) compatible container engine. This includes Windows, Linux, and macOS on both Intel and Apple silicon.
42
+
All containers are multi-platform and can be used on x64 (x86-64) and arm64 hardware on an operating system that supports an [OCI](https://opencontainers.org/) compatible container engine.
43
+
This includes Windows, Linux, and macOS on both Intel and Apple silicon.
42
44
43
45
## State
44
46
@@ -53,9 +55,10 @@ The following devcontainers are published towards the [GitHub Container Registry
53
55
-[amp-devcontainer-cpp](https://github.com/orgs/philips-software/packages/container/package/amp-devcontainer-cpp); the C++ container
54
56
-[amp-devcontainer-rust](https://github.com/orgs/philips-software/packages/container/package/amp-devcontainer-rust); the Rust container
55
57
56
-
Both containers include a full [Visual Studio Code](https://code.visualstudio.com/) configuration that is compatible with [GitHub Codespaces](https://github.com/features/codespaces).
58
+
All containers include a full [Visual Studio Code](https://code.visualstudio.com/) configuration that is compatible with [GitHub Codespaces](https://github.com/features/codespaces).
57
59
58
-
A summary of the included tools can be found below. For the full list of all included tools and tool versions see the [Dependency Graph](https://github.com/philips-software/amp-devcontainer/network/dependencies), the SBOM published with a [release](https://github.com/philips-software/amp-devcontainer/releases), or the SBOM attached to the image.
60
+
A summary of the included tools can be found below.
61
+
For the full list of all included tools and tool versions see the [Dependency Graph](https://github.com/philips-software/amp-devcontainer/network/dependencies), the SBOM published with a [release](https://github.com/philips-software/amp-devcontainer/releases), or the SBOM attached to the image.
59
62
60
63
#### amp-devcontainer-cpp
61
64
@@ -75,7 +78,11 @@ For embedded development and flashing and debugging [probe-rs](https://probe.rs/
75
78
76
79
### Versioning
77
80
78
-
The amp-devcontainer repository follows a [semantic versioning](https://semver.org/spec/v2.0.0.html) strategy for its container images. This ensures clear communication of updates and compatibility. The versioning format used is `<major>.<minor>.<patch>`. Released containers are tagged with `<major>`, `<major>.<minor>`, `<major>.<minor>.<patch>` and `v<major>.<minor>.<patch>`. The latest build on the default branch is tagged with `edge` and pull request builds are tagged with `pr-<number>`.
81
+
The amp-devcontainer repository follows a [semantic versioning](https://semver.org/spec/v2.0.0.html) strategy for its container images.
82
+
This ensures clear communication of updates and compatibility.
83
+
The versioning format used is `<major>.<minor>.<patch>`.
84
+
Released containers are tagged with `<major>`, `<major>.<minor>`, `<major>.<minor>.<patch>` and `v<major>.<minor>.<patch>`.
85
+
The latest build on the default branch is tagged with `edge` and pull request builds are tagged with `pr-<number>`.
79
86
80
87
| Branch | Tag |
81
88
|--------------|----------------------------|
@@ -86,20 +93,33 @@ The amp-devcontainer repository follows a [semantic versioning](https://semver.o
86
93
||`<major>.<minor>`|
87
94
||`<major>`|
88
95
89
-
Released containers will never be cleaned-up, pull request builds are cleaned up when the pull request is merged, and edge builds may be cleaned up after being stale for a while.
96
+
Released containers will never be cleaned-up, pull request builds are cleaned up when the pull request is closed, and edge builds will be cleaned up shortly after a new edge version has been published.
90
97
91
-
The release notes always contain an overview of the corresponding image versions that include the full SHA next to the version number. This makes it possible for humans to easily see what version is used while still pinning to an exact version. This is the recommended way to refer to an image.
98
+
The release notes always contain an overview of the corresponding image versions that include the full SHA next to the version number.
99
+
This makes it possible for humans to easily see what version is used while still pinning to an exact version.
100
+
This is the recommended way to refer to an image.
92
101
93
-
All container images are included in a release. This might change in the future when the need arises to have separate releases per container.
102
+
All container images are included in a release.
103
+
This might change in the future when the need arises to have separate releases per container.
94
104
95
-
This versioning strategy is implemented as GitHub Actions workflows, ensuring consistency and security across releases. Only the GitHub Action workflow is allowed to create a release, and the resulting images are [signed](#verify-image-signature).
105
+
This versioning strategy is implemented as GitHub Actions workflows, ensuring consistency and security across releases.
106
+
Only the GitHub Action workflow is allowed to create a release, and the resulting images are [signed](#verify-image-signature).
96
107
97
108
### Visual Studio Code
98
109
99
-
Both containers 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 these [specifications](https://containers.dev/implementors/reference/#labels). It is possible to override, amend or change the options following this [merge logic](https://containers.dev/implementors/spec/#merge-logic).
110
+
All containers can be used in Visual Studio Code or GitHub Codespaces without any additional configuration.
111
+
All included tools are preconfigured and necessary plug-ins will be installed at container start.
112
+
This behavior is implemented by appending devcontainer metadata to an image label according to these [specifications](https://containers.dev/implementors/reference/#labels).
113
+
It is possible to override, amend or change the options following this [merge logic](https://containers.dev/implementors/spec/#merge-logic).
100
114
101
115
## Usage
102
116
117
+
This chapter describes how to use amp-devcontainer for two common use-cases, and details how to verify the signature of the container images.
118
+
119
+
> [!IMPORTANT]
120
+
> While the following examples use the `latest` tag, it is recommended to pin to a specific version using vX.Y.Z. Or better yet, a specific SHA.
121
+
> See the 🔖 Packages section on the [releases](https://github.com/philips-software/amp-devcontainer/releases) page for the unambiguous identifier corresponding to a specific release.
122
+
103
123
### Verify image signature
104
124
105
125
<details><summary>Prior to version 5.6.0</summary>
@@ -108,16 +128,10 @@ The container images are signed with [SigStore](https://www.sigstore.dev/) [Cosi
108
128
109
129
The signature can be [verified](https://docs.sigstore.dev/cosign/verifying/verify/) with the following command (using Docker), verifying that the image is actually signed by the GitHub CI system:
110
130
111
-
> amp-devcontainer-cpp
112
-
113
-
```sh
114
-
docker run --rm gcr.io/projectsigstore/cosign verify ghcr.io/philips-software/amp-devcontainer-cpp --certificate-oidc-issuer https://token.actions.githubusercontent.com --certificate-identity-regexp https://github.com/philips-software/amp-devcontainer
115
-
```
116
-
117
-
> amp-devcontainer-rust
131
+
> amp-devcontainer-<🍨 flavor>
118
132
119
133
```sh
120
-
docker run --rm gcr.io/projectsigstore/cosign verify ghcr.io/philips-software/amp-devcontainer-rust --certificate-oidc-issuer https://token.actions.githubusercontent.com --certificate-identity-regexp https://github.com/philips-software/amp-devcontainer
0 commit comments