|
| 1 | +# Dev Container Build Setup |
| 2 | + |
| 3 | +This repository includes a Dev Container configuration for building the Copilot 365 Agent in an isolated environment. |
| 4 | + |
| 5 | +## Prerequisites |
| 6 | + |
| 7 | +- Docker installed and running |
| 8 | +- Visual Studio Code with Dev Containers extension (or compatible IDE) |
| 9 | + |
| 10 | +## Quick Start |
| 11 | + |
| 12 | +1. **Open in Dev Container** |
| 13 | + - Open this repository in VS Code |
| 14 | + - When prompted, click "Reopen in Container" |
| 15 | + - Or use Command Palette: `Dev Containers: Reopen in Container` |
| 16 | + |
| 17 | +2. **Build the Agent** |
| 18 | + ```bash |
| 19 | + ./build.sh |
| 20 | + ``` |
| 21 | + |
| 22 | +3. **Find the Binaries** |
| 23 | + The compiled binaries will be in the `build/` directory: |
| 24 | + - `copilot365_agent_win.exe` - Windows 64-bit PE executable |
| 25 | + - `copilot365_agent_linux` - Linux 64-bit ELF executable |
| 26 | + |
| 27 | +## Project Structure |
| 28 | + |
| 29 | +``` |
| 30 | +/opt/copilot-365-agent/ |
| 31 | +├── .devcontainer/ |
| 32 | +│ └── devcontainer.json # Dev Container configuration |
| 33 | +├── Dockerfile # Ubuntu 20.04 with build tools |
| 34 | +├── build.sh # Cross-platform build script |
| 35 | +├── src/ # Source code modules |
| 36 | +│ ├── ingress.c # Main entry point |
| 37 | +│ ├── propagation.c # Mutation engine |
| 38 | +│ ├── targeting.c # Target identification |
| 39 | +│ ├── effect.c # Payload execution |
| 40 | +│ ├── conceal.c # Stealth capabilities |
| 41 | +│ ├── persistence.c # Survival mechanisms |
| 42 | +│ └── mutation.h # Header file |
| 43 | +└── tests/ |
| 44 | + └── sandbox_tests.md # Test documentation |
| 45 | +``` |
| 46 | + |
| 47 | +## Environment Details |
| 48 | + |
| 49 | +The Dev Container is configured with: |
| 50 | +- **Base Image**: Ubuntu 20.04 |
| 51 | +- **Network**: Isolated (`--network=none`) |
| 52 | +- **Capabilities**: `SYS_ADMIN` added |
| 53 | +- **Tools Installed**: |
| 54 | + - `build-essential` - GCC and build tools |
| 55 | + - `mingw-w64` - Windows cross-compiler |
| 56 | + - `gcc-multilib` - Multi-architecture support |
| 57 | + - `git` - Version control |
| 58 | + - `python3` - Python support |
| 59 | + |
| 60 | +## Build Process |
| 61 | + |
| 62 | +The `build.sh` script: |
| 63 | +1. Generates a random mutation seed |
| 64 | +2. Compiles for Windows using `x86_64-w64-mingw32-gcc` |
| 65 | +3. Compiles for Linux using `gcc` |
| 66 | +4. Both builds use `-Os` optimization and the same mutation seed |
| 67 | + |
| 68 | +Each build produces a unique binary with compile-time variation based on the random seed. |
| 69 | + |
| 70 | +## Testing |
| 71 | + |
| 72 | +Refer to `tests/sandbox_tests.md` for comprehensive testing procedures. |
| 73 | + |
| 74 | +## Security |
| 75 | + |
| 76 | +- The build environment has no network access |
| 77 | +- Builds are performed in an isolated container |
| 78 | +- Build artifacts are excluded from version control |
| 79 | + |
| 80 | +## Troubleshooting |
| 81 | + |
| 82 | +**Issue**: Permission denied when running `build.sh` |
| 83 | +**Solution**: Make the script executable: `chmod +x build.sh` |
| 84 | + |
| 85 | +**Issue**: Build directory not found |
| 86 | +**Solution**: The script automatically creates the `build/` directory |
| 87 | + |
| 88 | +**Issue**: Compiler not found |
| 89 | +**Solution**: Rebuild the Dev Container to ensure all tools are installed |
0 commit comments