mirror of
https://github.com/apache/superset.git
synced 2026-04-28 20:44:24 +00:00
Compare commits
24 Commits
docs/testi
...
codespaces
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
375fe42a68 | ||
|
|
e6e0c3c47e | ||
|
|
1d6617d809 | ||
|
|
4ff2a85b11 | ||
|
|
f1a3bdd878 | ||
|
|
4b5dbf3dcf | ||
|
|
458db68929 | ||
|
|
d4463078ad | ||
|
|
7ad10ac1a9 | ||
|
|
f580f6159e | ||
|
|
a26e0ea0fe | ||
|
|
4eef7a65c1 | ||
|
|
ba3388bf94 | ||
|
|
ca57bbc1e2 | ||
|
|
19f414b217 | ||
|
|
bc604d54e4 | ||
|
|
e922e51e6b | ||
|
|
8bf2e4ea3a | ||
|
|
cf8183b67e | ||
|
|
02f90f4321 | ||
|
|
a007b3020d | ||
|
|
26e5e637f9 | ||
|
|
8de420ec8e | ||
|
|
fd51cc65a2 |
5
.devcontainer/README.md
Normal file
5
.devcontainer/README.md
Normal file
@@ -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)**
|
||||||
52
.devcontainer/devcontainer.json
Normal file
52
.devcontainer/devcontainer.json
Normal file
@@ -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"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
32
.devcontainer/setup-dev.sh
Executable file
32
.devcontainer/setup-dev.sh
Executable file
@@ -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"
|
||||||
59
.devcontainer/start-superset.sh
Executable file
59
.devcontainer/start-superset.sh
Executable file
@@ -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
|
||||||
@@ -120,6 +120,78 @@ docker volume rm superset_db_home
|
|||||||
docker-compose up
|
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=master&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
|
## Installing Development Tools
|
||||||
|
|
||||||
:::note
|
:::note
|
||||||
|
|||||||
Reference in New Issue
Block a user