Skip to content

Initial Doppler devcontainer feature#1

Merged
amoses12 merged 1 commit intomainfrom
austin/cli
Mar 5, 2026
Merged

Initial Doppler devcontainer feature#1
amoses12 merged 1 commit intomainfrom
austin/cli

Conversation

@amoses12
Copy link
Copy Markdown
Contributor

@amoses12 amoses12 commented Feb 3, 2026

This PR adds a few things to the POC that already existsed:

  • Update github actions to v4
  • Add support for more container distributions
  • Add tests for those distributions
  • Use our install script directly as opposed to APT
  • Update the install script to check for appropriate user
  • Add version support
  • Add tests for specific/latest versions and different distros

This will require CLI changes to be deployed in order for CI tests to pass: PR 512

@amoses12
Copy link
Copy Markdown
Contributor Author

amoses12 commented Feb 3, 2026

There are currently some comments in the install.sh file so I can debug CI checks if needed. I will remove them before final approval.

@amoses12 amoses12 marked this pull request as draft February 3, 2026 21:34
Comment on lines +18 to +26
# Debian-based
- debian:latest
- debian:bullseye
- ubuntu:latest
- ubuntu:22.04
- ubuntu:20.04
# Microsoft dev containers
- mcr.microsoft.com/devcontainers/base:ubuntu
- mcr.microsoft.com/devcontainers/base:debian
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

optional: I think testing on just the latest images is probably fine.

Comment on lines +11 to +14
echo "Checking for curl..."
if ! type curl >/dev/null 2>&1; then
echo "Installing curl..."
apt-get update -y && apt-get -y install --no-install-recommends curl ca-certificates
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

blocking: This all assumes that this is a debian based system with apt-get installed, which is not a valid assumption. Take a look at how some of microsoft's features install from different package managers. We should support redhat variants and alpine, at a minimum (and probably also test those).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Also, be sure to clean up the package lists after you're done, to keep the user's layer size small.

Comment on lines +3 to +4
push:
branches: [main]
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

nit: I don't know that we necessarily want this on every push, we likely want it to be manual and only run it when the version changes.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Good call, removed this.

Comment on lines +17 to +21
{
"source": "doppler-cli-user-config",
"target": "/doppler",
"type": "volume"
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

check: Is it safe/valid to have a volume shared between all containers that might use this feature?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This is a good question and I struggled with where to go for this. The volume gets shared across devcontainers, but the devcontainers stay in 1 location. Meaning if someone has multiple devcontainers running, those containers should be contained to their local machines and not be shared with other engineers. Where this could become an issue is if a team is working on a shared Docker host, but that seems very atypical of devcontainer usage. Having a volume means users don't have to reauthenticate across every dev container if they're running multiple or on every single devcontainer build. I could be talked into either direction on this.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

It's been a long time since I looked at this, but as I recall, the volumes get a persistent, unique ID appended to the name when the container is started, so I don't think this should be a problem unless they're literally using the exact same devcontainer, which seems unlikely. Most ways I've seen this used, each developer has their own devcontainer running.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I've pulled the volume. It's easy enough for any user to add a volume to their own devcontainer.json file which gives users the option of going either way.

@amoses12 amoses12 force-pushed the austin/cli branch 3 times, most recently from 03fc764 to e314e70 Compare February 12, 2026 21:15
@amoses12 amoses12 requested a review from emily-curry February 12, 2026 21:17
@amoses12 amoses12 force-pushed the austin/cli branch 5 times, most recently from f871b92 to 62cafcc Compare February 17, 2026 22:14
@amoses12 amoses12 marked this pull request as ready for review February 17, 2026 22:22
@amoses12
Copy link
Copy Markdown
Contributor Author

Notes since last reviews and opening PR:

  • Added signature verification to pinned version installs.
  • Install bash on Alpine since our install script needs it and Alpine doesn't have it.
  • Moved gpgv binary search here instead of having it in the CLI.
  • Removed volume (any user or team can add one in their own devcontainer.json file).

Copy link
Copy Markdown
Member

@emily-curry emily-curry left a comment

Choose a reason for hiding this comment

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

The behavior itself seems solid! Just needs some final polish to actually make this public.

packages: write
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

nit: In the future, this is the category of change that should be in its own commit, not squashed into the same commit as the main feature.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

nit: We will want to add/update the README for both the feature itself, and in the root of the repository. This will be a public repo. Here's an example of how another open source project does it: https://github.com/rails/devcontainer/blob/main/features/src/mysql-client/README.md

We should also move the .devcontainer.json to be in .devcontainer/devcontainer.json to match the latest in the template repo, and change the license to be the apache license (which will then need to be linked to with the "licenseURL" property).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

It does look like the feature docs in src/doppler-cli/README.md are auto-generated, so those don't need to be touched.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@emily-curry updated the license, README, and folder structure. I tried to follow other public repos, but open to any other feedback as always.

Copy link
Copy Markdown
Member

@emily-curry emily-curry left a comment

Choose a reason for hiding this comment

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

Looks good! After you merge, I'll move this to the main DopplerHQ org and cut a release.

Copy link
Copy Markdown

@mikesellitto mikesellitto left a comment

Choose a reason for hiding this comment

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

looks good!

@amoses12 amoses12 merged commit e4fc1f8 into main Mar 5, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants