✨ feat(devcontainer): add multi-environment configs for VS Code, Codespaces, and JetBrains#721
✨ feat(devcontainer): add multi-environment configs for VS Code, Codespaces, and JetBrains#721
Conversation
…spaces, and JetBrains Add three separate devcontainer configurations optimized for different development environments: - Default (.devcontainer/): VS Code local with bind mount and .env file - Codespaces (.devcontainer/codespaces/): No .env dependency, uses GitHub secrets only - JetBrains (.devcontainer/jetbrains/): Hybrid mount (named volume + .devcontainer bind) Key changes: - Add Codespaces config that works without .env file (gitignored, doesn't exist in cloud) - Add JetBrains config with hybrid mount for native inotify support - Add X11 libraries to Dockerfile for JetBrains Gateway compatibility - Update README with three-config architecture documentation - Mark override file approach as deprecated for JetBrains users Fixes #718 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Integration Test Results315 tests ±0 311 ✅ - 4 4m 36s ⏱️ -31s For more details on these failures, see this check. Results for commit 5545f1f. ± Comparison against base commit 47eb92a. ♻️ This comment has been updated with latest results. |
There was a problem hiding this comment.
Pull request overview
This PR introduces a multi-environment devcontainer architecture with three separate, optimized configurations tailored to different development tools and workflows: VS Code (local), GitHub Codespaces, and JetBrains Gateway.
Key Changes:
- Added dedicated Codespaces configuration that works exclusively with GitHub secrets (no
.envfile dependency) - Added dedicated JetBrains configuration with hybrid mount approach (named volume for workspace + bind mount for
.devcontainerfolder) to resolve gRPC FUSE file watching issues - Enhanced Dockerfile with X11 libraries required for JetBrains Gateway compatibility
- Updated documentation to explain the three-config architecture and deprecate the manual override file approach for JetBrains users
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
.devcontainer/jetbrains/docker-compose.yml |
New JetBrains-specific compose config with hybrid mount strategy (named volume for workspace, bind mount for .devcontainer to access .env file) |
.devcontainer/jetbrains/devcontainer.json |
New JetBrains devcontainer configuration referencing the JetBrains-specific docker-compose file |
.devcontainer/codespaces/docker-compose.yml |
New Codespaces-specific compose config that uses GitHub secrets directly without .env file dependency |
.devcontainer/codespaces/devcontainer.json |
New Codespaces devcontainer configuration with VS Code extensions and settings |
.devcontainer/README.md |
Comprehensive documentation update explaining the three-config architecture, setup steps for each environment, and trade-offs |
.devcontainer/docker-compose.override.yml.template |
Updated with deprecation notices directing JetBrains and Codespaces users to dedicated configurations |
.devcontainer/Dockerfile |
Added X11 libraries (libxext6, libxrender1, libxtst6, libxi6, libfreetype6) required for JetBrains Gateway support |
The changes are well-structured, properly documented, and follow consistent patterns across all configurations. Each environment's unique requirements (bind mounts vs named volumes, .env files vs GitHub secrets) are appropriately addressed. No issues were identified during the review.
|
@copilot open a new pull request to apply changes based on the comments in this thread |
* Initial plan * 🐛 fix(codespaces): correct volume mount path to repository root Co-authored-by: codekiln <140930+codekiln@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: codekiln <140930+codekiln@users.noreply.github.com>
|
In jetbrains: This was using the VCS clone method. I think there's a conceptual difference between how we need to configure vcs clone method in jetbrains and how it works in VS Code because the .env file will just not be there before it's cloned. It's more like codepsaces, but without the ability to define the environment variables ahead of time. |
Summary
Adds three separate devcontainer configurations optimized for different development environments:
.devcontainer/.envfile.devcontainer/codespaces/.devcontainer/jetbrains/.envvia bindWhy Three Configurations?
.envfile.envis gitignored and doesn't exist in cloud, must use GitHub Codespaces secrets.envfile via hybrid mountChanges
codespaces/config that works without.envfile (uses GitHub secrets directly)jetbrains/config with hybrid mount (named volume for workspace, bind mount for.devcontainer)libxext6,libxrender1,libxtst6,libxi6,libfreetype6)Test Plan
codespaces/devcontainer.jsonjetbrains/devcontainer.jsonmount | grep /workspaceFixes #718
🤖 Generated with Claude Code