This is an automated email from the ASF dual-hosted git repository.

elizabeth pushed a commit to branch elizabeth/fix-resize-bug
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 287ddb99ef4f1ed71faf5b972efca0032d0d8f3b
Author: Maxime Beauchemin <[email protected]>
AuthorDate: Tue Jul 29 13:10:17 2025 -0700

    feat: Add GitHub Codespaces support with docker-compose-light (#34376)
    
    Co-authored-by: Claude <[email protected]>
---
 .devcontainer/README.md                |  5 +++
 .devcontainer/devcontainer.json        | 52 ++++++++++++++++++++++++
 .devcontainer/setup-dev.sh             | 32 +++++++++++++++
 .devcontainer/start-superset.sh        | 59 ++++++++++++++++++++++++++++
 docs/docs/contributing/development.mdx | 72 ++++++++++++++++++++++++++++++++++
 5 files changed, 220 insertions(+)

diff --git a/.devcontainer/README.md b/.devcontainer/README.md
new file mode 100644
index 0000000000..6b24183edc
--- /dev/null
+++ b/.devcontainer/README.md
@@ -0,0 +1,5 @@
+# Superset Development with GitHub Codespaces
+
+For complete documentation on using GitHub Codespaces with Apache Superset, 
please see:
+
+**[Setting up a Development Environment - GitHub 
Codespaces](https://superset.apache.org/docs/contributing/development#github-codespaces-cloud-development)**
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 0000000000..c73a69e6c4
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,52 @@
+{
+  "name": "Apache Superset Development",
+  // Keep this in sync with the base image in Dockerfile (ARG PY_VER)
+  // Using the same base as Dockerfile, but non-slim for dev tools
+  "image": "python:3.11.13-bookworm",
+
+  "features": {
+    "ghcr.io/devcontainers/features/docker-in-docker:2": {
+      "moby": true,
+      "dockerDashComposeVersion": "v2"
+    },
+    "ghcr.io/devcontainers/features/node:1": {
+      "version": "20"
+    },
+    "ghcr.io/devcontainers/features/git:1": {},
+    "ghcr.io/devcontainers/features/common-utils:2": {
+      "configureZshAsDefaultShell": true
+    },
+    "ghcr.io/devcontainers/features/sshd:1": {
+      "version": "latest"
+    }
+  },
+
+  // Forward ports for development
+  "forwardPorts": [9001],
+  "portsAttributes": {
+    "9001": {
+      "label": "Superset (via Webpack Dev Server)",
+      "onAutoForward": "notify",
+      "visibility": "public"
+    }
+  },
+
+  // Run commands after container is created
+  "postCreateCommand": "chmod +x .devcontainer/setup-dev.sh && 
.devcontainer/setup-dev.sh",
+
+  // Auto-start Superset on Codespace resume
+  "postStartCommand": ".devcontainer/start-superset.sh",
+
+  // VS Code customizations
+  "customizations": {
+    "vscode": {
+      "extensions": [
+        "ms-python.python",
+        "ms-python.vscode-pylance",
+        "charliermarsh.ruff",
+        "dbaeumer.vscode-eslint",
+        "esbenp.prettier-vscode"
+      ]
+    }
+  }
+}
diff --git a/.devcontainer/setup-dev.sh b/.devcontainer/setup-dev.sh
new file mode 100755
index 0000000000..f852118900
--- /dev/null
+++ b/.devcontainer/setup-dev.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+# Setup script for Superset Codespaces development environment
+
+echo "๐Ÿ”ง Setting up Superset development environment..."
+
+# The universal image has most tools, just need Superset-specific libs
+echo "๐Ÿ“ฆ Installing Superset-specific dependencies..."
+sudo apt-get update
+sudo apt-get install -y \
+    libsasl2-dev \
+    libldap2-dev \
+    libpq-dev \
+    tmux \
+    gh
+
+# Install uv for fast Python package management
+echo "๐Ÿ“ฆ Installing uv..."
+curl -LsSf https://astral.sh/uv/install.sh | sh
+
+# Add cargo/bin to PATH for uv
+echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
+echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.zshrc
+
+# Install Claude Code CLI via npm
+echo "๐Ÿค– Installing Claude Code..."
+npm install -g @anthropic-ai/claude-code
+
+# Make the start script executable
+chmod +x .devcontainer/start-superset.sh
+
+echo "โœ… Development environment setup complete!"
+echo "๐Ÿš€ Run '.devcontainer/start-superset.sh' to start Superset"
diff --git a/.devcontainer/start-superset.sh b/.devcontainer/start-superset.sh
new file mode 100755
index 0000000000..db41aceecf
--- /dev/null
+++ b/.devcontainer/start-superset.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+# Startup script for Superset in Codespaces
+
+echo "๐Ÿš€ Starting Superset in Codespaces..."
+echo "๐ŸŒ Frontend will be available at port 9001"
+
+# Find the workspace directory (Codespaces clones as 'superset', not 
'superset-2')
+WORKSPACE_DIR=$(find /workspaces -maxdepth 1 -name "superset*" -type d | head 
-1)
+if [ -n "$WORKSPACE_DIR" ]; then
+    cd "$WORKSPACE_DIR"
+    echo "๐Ÿ“ Working in: $WORKSPACE_DIR"
+else
+    echo "๐Ÿ“ Using current directory: $(pwd)"
+fi
+
+# Check if docker is running
+if ! docker info > /dev/null 2>&1; then
+    echo "โณ Waiting for Docker to start..."
+    sleep 5
+fi
+
+# Clean up any existing containers
+echo "๐Ÿงน Cleaning up existing containers..."
+docker-compose -f docker-compose-light.yml down
+
+# Start services
+echo "๐Ÿ—๏ธ  Building and starting services..."
+echo ""
+echo "๐Ÿ“ Once started, login with:"
+echo "   Username: admin"
+echo "   Password: admin"
+echo ""
+echo "๐Ÿ“‹ Running in foreground with live logs (Ctrl+C to stop)..."
+
+# Run docker-compose and capture exit code
+docker-compose -f docker-compose-light.yml up
+EXIT_CODE=$?
+
+# If it failed, provide helpful instructions
+if [ $EXIT_CODE -ne 0 ] && [ $EXIT_CODE -ne 130 ]; then  # 130 is Ctrl+C
+    echo ""
+    echo "โŒ Superset startup failed (exit code: $EXIT_CODE)"
+    echo ""
+    echo "๐Ÿ”„ To restart Superset, run:"
+    echo "   .devcontainer/start-superset.sh"
+    echo ""
+    echo "๐Ÿ”ง For troubleshooting:"
+    echo "   # View logs:"
+    echo "   docker-compose -f docker-compose-light.yml logs"
+    echo ""
+    echo "   # Clean restart (removes volumes):"
+    echo "   docker-compose -f docker-compose-light.yml down -v"
+    echo "   .devcontainer/start-superset.sh"
+    echo ""
+    echo "   # Common issues:"
+    echo "   - Network timeouts: Just retry, often transient"
+    echo "   - Port conflicts: Check 'docker ps'"
+    echo "   - Database issues: Try clean restart with -v"
+fi
diff --git a/docs/docs/contributing/development.mdx 
b/docs/docs/contributing/development.mdx
index ff0b6633fb..fe8995d28a 100644
--- a/docs/docs/contributing/development.mdx
+++ b/docs/docs/contributing/development.mdx
@@ -120,6 +120,78 @@ docker volume rm superset_db_home
 docker-compose up
 ```
 
+## GitHub Codespaces (Cloud Development)
+
+GitHub Codespaces provides a complete, pre-configured development environment 
in the cloud. This is ideal for:
+- Quick contributions without local setup
+- Consistent development environments across team members
+- Working from devices that can't run Docker locally
+- Safe experimentation in isolated environments
+
+:::info
+We're grateful to GitHub for providing this excellent cloud development 
service that makes
+contributing to Apache Superset more accessible to developers worldwide.
+:::
+
+### Getting Started with Codespaces
+
+1. **Create a Codespace**: Use this pre-configured link that sets up 
everything you need:
+
+   [**Launch Superset Codespace 
โ†’**](https://github.com/codespaces/new?skip_quickstart=true&machine=standardLinux32gb&repo=39464018&ref=codespaces&geo=UsWest&devcontainer_path=.devcontainer%2Fdevcontainer.json)
+
+   :::caution
+   **Important**: You must select at least the **4 CPU / 16GB RAM** machine 
type (pre-selected in the link above).
+   Smaller instances will not have sufficient resources to run Superset 
effectively.
+   :::
+
+2. **Wait for Setup**: The initial setup takes several minutes. The Codespace 
will:
+   - Build the development container
+   - Install all dependencies
+   - Start all required services (PostgreSQL, Redis, etc.)
+   - Initialize the database with example data
+
+3. **Access Superset**: Once ready, check the **PORTS** tab in VS Code for 
port `9001`.
+   Click the globe icon to open Superset in your browser.
+   - Default credentials: `admin` / `admin`
+
+### Key Features
+
+- **Auto-reload**: Both Python and TypeScript files auto-refresh on save
+- **Pre-installed Extensions**: VS Code extensions for Python, TypeScript, and 
database tools
+- **Multiple Instances**: Run multiple Codespaces for different 
branches/features
+- **SSH Access**: Connect via terminal using `gh cs ssh` or through the GitHub 
web UI
+- **VS Code Integration**: Works seamlessly with VS Code desktop app
+
+### Managing Codespaces
+
+- **List active Codespaces**: `gh cs list`
+- **SSH into a Codespace**: `gh cs ssh`
+- **Stop a Codespace**: Via GitHub UI or `gh cs stop`
+- **Delete a Codespace**: Via GitHub UI or `gh cs delete`
+
+### Debugging and Logs
+
+Since Codespaces uses `docker-compose-light.yml`, you can monitor all services:
+
+```bash
+# Stream logs from all services
+docker compose -f docker-compose-light.yml logs -f
+
+# Stream logs from a specific service
+docker compose -f docker-compose-light.yml logs -f superset
+
+# View last 100 lines and follow
+docker compose -f docker-compose-light.yml logs --tail=100 -f
+
+# List all running services
+docker compose -f docker-compose-light.yml ps
+```
+
+:::tip
+Codespaces automatically stop after 30 minutes of inactivity to save resources.
+Your work is preserved and you can restart anytime.
+:::
+
 ## Installing Development Tools
 
 :::note

Reply via email to