Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 22 additions & 11 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,30 @@
"ghcr.io/devcontainers/features/git:1": {},

// Debian/Ubuntu-based distributions with the apt package manager installed.
"ghcr.io/devcontainers/features/github-cli:1": {}

// Debian/Ubuntu-based distributions with the apt package manager installed.
// "ghcr.io/devcontainers/features/dotnet:2": {},
"ghcr.io/devcontainers/features/github-cli:1": {},

// Bun JavaScript runtime (borrowing from the Rails devcontainer repository).
"ghcr.io/rails/devcontainer/features/bun:1": {
"version": "latest"
Comment on lines +71 to +73
},
Comment on lines +72 to +74
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Bun version is unpinned ("latest")

Unlike the other three features in this PR (Python 3.12, Ruby 3.4, Go 1.23), Bun uses "version": "latest", which is non-deterministic. Two developers rebuilding the container at different times could get different Bun versions, leading to inconsistent toolchain behaviour. Pin a specific version for reproducibility.

Suggested change
"ghcr.io/rails/devcontainer/features/bun:1": {
"version": "latest"
},
"ghcr.io/rails/devcontainer/features/bun:1": {
"version": "1.2.3"
},


// Debian/Ubuntu, RedHat Enterprise Linux, Fedora, Alma, and RockyLinux distributions with the apt, yum, dnf, or microdnf package manager installed.
// "ghcr.io/devcontainers/features/go:1": {},
"ghcr.io/devcontainers/features/python:1": {
"version": "3.12"
},

// This Feature should work on recent versions of Debian/Ubuntu-based distributions with the apt package manager installed.
"ghcr.io/devcontainers/features/ruby:1": {
"version": "3.4"
},

// Debian/Ubuntu, RedHat Enterprise Linux, Fedora, Alma, and RockyLinux distributions with the apt, yum, dnf, or microdnf package manager installed.
"ghcr.io/devcontainers/features/go:1": {
"version": "1.23"
}

// Debian/Ubuntu-based distributions with the apt package manager installed.
// "ghcr.io/devcontainers/features/dotnet:2": {},

// Debian/Ubuntu, RedHat Enterprise Linux, Fedora, Alma, and RockyLinux distributions with the apt, yum, dnf, or microdnf package manager installed.
// "ghcr.io/devcontainers/features/java:1": {},
Expand All @@ -84,12 +101,6 @@
// Debian/Ubuntu-based distributions with the apt package manager installed.
// "ghcr.io/devcontainers/features/php:1": {},

// Debian/Ubuntu, RedHat Enterprise Linux, Fedora, Alma, and RockyLinux distributions with the apt, yum, dnf, or microdnf package manager installed.
// "ghcr.io/devcontainers/features/python:1": {}

// This Feature should work on recent versions of Debian/Ubuntu-based distributions with the apt package manager installed.
// "ghcr.io/devcontainers/features/ruby:1": {},

// Debian/Ubuntu, RedHat Enterprise Linux, Fedora, Alma, RockyLinux and Mariner distributions with the apt, yum, dnf, microdnf and tdnf package manager installed.
// Note: Alpine is not supported because the rustup-init binary requires glibc to run, but Alpine Linux does not include glibc by default. Instead, it uses musl libc, which is not binary-compatible with glibc.
// "ghcr.io/devcontainers/features/rust:1": {},
Expand Down