@debugmcp/mcp-debugger
Version:
Run-time step-through debugging for LLM agents.
92 lines (72 loc) • 3.49 kB
Markdown
# Task 8: Configure Act for Docker-in-Docker E2E Tests - Summary
## Overview
Successfully configured Act to enable local running of Docker-in-Docker E2E tests that were failing due to missing Docker CLI and volume mount issues.
## Problem
- Container smoke tests failing with "Script path not found: /workspace/examples/python/fibonacci.py"
- Python discovery test failing with "spawn node ENOENT"
- Act's default slim images lack Docker CLI
- Volume mounts weren't properly bound to host filesystem
## Solution Implemented
### 1. Updated `.actrc` Configuration
Added critical flags to enable Docker operations:
```text
-P ubuntu-latest=catthehacker/ubuntu:full-22.04 # Full image with Docker CLI
--bind # CRITICAL: Bind mount workspace
--privileged # Enable Docker daemon access
--container-architecture linux/amd64 # Cross-platform compatibility
```
Key insight: The `--bind` flag was essential - without it, Act copies files into the container but volume mounts reference non-existent host paths.
### 2. Fixed Python Discovery Test
Modified `tests/integration/python-real-discovery.test.ts` to:
- Detect Act environment via `process.env.ACT === 'true'`
- Use `process.execPath` for Node.js path in Act/Linux environments
- Maintain Windows compatibility for non-Act environments
- Fixed all ESLint errors (removed unused imports, proper typing)
### 3. Enhanced Documentation
#### Updated `tests/README.md` with:
- Comprehensive Act setup instructions
- Platform-specific requirements (WSL2 for Windows)
- Common troubleshooting scenarios
- Docker image build instructions
#### Updated main `README.md` with:
- Brief section on running container tests locally
- Link to detailed test documentation
## Key Technical Details
### Act Behavior
- Act automatically mounts `/var/run/docker.sock` (no manual configuration needed)
- Uses host Docker daemon, not true Docker-in-Docker
- `--bind` flag makes workspace available for volume mounts
- `--privileged` grants necessary permissions
### Platform Considerations
- **Windows**: Must run Act inside WSL2
- **macOS M1/M2**: Architecture flag handles compatibility
- **Linux**: Works directly
## Testing Commands
```bash
# Build Docker image
docker build -t mcp-debugger:local .
# Run tests with Act
act -j build-and-test --matrix os:ubuntu-latest
# Use local images
act -j build-and-test --matrix os:ubuntu-latest -p=false
```
## Impact
- All E2E container tests can now run locally via Act
- Developers can test Docker-related functionality without pushing to CI
- Faster iteration on container-related features
- Better local/CI parity
## Files Modified
1. `.actrc` - Added Docker support flags
2. `tests/integration/python-real-discovery.test.ts` - Fixed PATH handling for Act
3. `tests/README.md` - Added comprehensive Act documentation
4. `README.md` - Added brief container testing section
## Validation
The configuration enables:
- ✅ Container smoke tests to properly mount volumes
- ✅ Python discovery test to find Node.js in Act environment
- ✅ Cross-platform compatibility (Windows/WSL2, macOS, Linux)
- ✅ Proper error messages for common issues
## Notes
- The existing `ensureDockerImage` function in test utilities already handles image existence checks
- Act's approach (host Docker mounting) is simpler and more reliable than true DinD
- Alternative solution (Testcontainers) documented as fallback option