UNPKG

@debugmcp/mcp-debugger

Version:

Run-time step-through debugging for LLM agents.

92 lines (72 loc) 3.49 kB
# 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