Skip to content

feat(up): launch repository with externally defined devcontainer - #709

Merged
skevetter merged 1 commit into
mainfrom
feat/devcontainer-ignore-config
Jul 22, 2026
Merged

skevetter merged 1 commit into
mainfrom
feat/devcontainer-ignore-config

Conversation

@skevetter

Copy link
Copy Markdown
Contributor

Summary

workspace up had no way to ignore a project's devcontainer config. --devcontainer-image only overrides the image field of an already-resolved config — it still runs discovery (so multiple .devcontainer/<id>/ profiles error out) and still applies the profile's features, lifecycle hooks, and mounts. That combination breaks in practice: e.g. a repo profile pulling docker-outside-of-docker fails to build on a swapped-in base image whose distro the feature doesn't support.

This adds a --devcontainer source selector so a user can bypass the project's devcontainer entirely.

Usage

# clean box on your image — ignores the repo's devcontainer
devsy workspace up --devcontainer none --devcontainer-image python <src>

# one-liner: config is just this image
devsy workspace up --devcontainer image:python <src>

When a source spec is set, resolution skips project discovery (no more "multiple devcontainer configurations found" error) and synthesizes an image-only config — no features, hooks, or mounts from the project.

Notes

  • The synthesized config is written to a devsy-namespaced filename (.devcontainer.devsy.json) so it never overwrites a user's own root .devcontainer.json (a spec-valid config location). Covered by a regression test.
  • --devcontainer-image is unchanged and still composes as the image modifier on top of any source.
  • This is phase 1 of a source / overlay / modifier axis model. Follow-ups: id: and <path> specs, and folding --devcontainer-path / --devcontainer-id / --fallback-image into --devcontainer as hidden aliases.

Adds a --devcontainer source selector to `workspace up` so a user can
bypass the project's devcontainer.json entirely, instead of only
overriding its image field via --devcontainer-image.

Supported specs:
  --devcontainer none         ignore the project config; use
                              --devcontainer-image or language detection
  --devcontainer image:<ref>  use only that image

When a source spec is set, config resolution skips project discovery
(so multiple .devcontainer profiles no longer error) and synthesizes an
image-only config with no features, lifecycle hooks, or mounts from the
project. The synthesized config is written to a devsy-namespaced
filename (.devcontainer.devsy.json) so it never overwrites a user's own
root .devcontainer.json, which is a spec-valid config location.

This is phase 1 of a source/overlay/modifier axis model; id: and path
specs plus aliasing of --devcontainer-path/--devcontainer-id/
--fallback-image are planned follow-ups.
@netlify

netlify Bot commented Jul 22, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for devsydev canceled.

Name Link
🔨 Latest commit 78a6155
🔍 Latest deploy log https://app.netlify.com/projects/devsydev/deploys/6a60262f91b8540008284e1c

@coderabbitai

coderabbitai Bot commented Jul 22, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

@skevetter, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 45 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 24a8e4a7-3e82-4d50-b784-4ba5161eb57f

📥 Commits

Reviewing files that changed from the base of the PR and between 8feba9f and 78a6155.

📒 Files selected for processing (7)
  • cmd/workspace/up/up.go
  • cmd/workspace/up/up_flags.go
  • pkg/devcontainer/config.go
  • pkg/devcontainer/config_test.go
  • pkg/devcontainer/source.go
  • pkg/devcontainer/source_test.go
  • pkg/provider/workspace.go

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@netlify

netlify Bot commented Jul 22, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for images-devsy-sh canceled.

Name Link
🔨 Latest commit 78a6155
🔍 Latest deploy log https://app.netlify.com/projects/images-devsy-sh/deploys/6a60262f79d33c00084bcddd

@skevetter
skevetter marked this pull request as ready for review July 22, 2026 02:23
@skevetter skevetter changed the title feat(up): add --devcontainer to ignore the project's devcontainer feat(up): load repository with externally defined devcontainer Jul 22, 2026
@skevetter skevetter changed the title feat(up): load repository with externally defined devcontainer feat(up): launch repository with externally defined devcontainer Jul 22, 2026
@skevetter
skevetter merged commit 2e79897 into main Jul 22, 2026
64 checks passed
@skevetter
skevetter deleted the feat/devcontainer-ignore-config branch July 22, 2026 03:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant