Files
GithubWorkflowTool/README.md
copilot-swe-agent[bot] 3ccda43d01 Add gwt doctor to Quick Start section
- Include doctor command in README quick start
- Encourage users to check compatibility before first run

Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
2025-12-27 03:29:26 +00:00

127 lines
4.1 KiB
Markdown

# GithubWorkflowTool
A cross-platform desktop application that clones Git repositories to per-user cache directories and simulates GitHub Actions workflows locally.
## Features
- **Repository Management**: Clone repositories to platform-specific cache directories
- Windows: `%APPDATA%\GithubWorkflowTool\repos\`
- Linux: `$XDG_DATA_HOME/githubworkflowtool/repos/` or `~/.local/share/githubworkflowtool/repos/`
- **Workflow Simulation**: Discover and execute GitHub Actions workflows locally
- Automatic discovery of `.github/workflows/*.yml` files
- Support for jobs, steps, needs, env variables, and outputs
- Matrix strategy expansion
- Artifacts upload/download (local equivalent)
- Caching support (local equivalent of actions/cache)
- **Multiple Execution Backends**:
- **Container Backend**: Fast iteration using Docker or Podman
- **QEMU Backend**: Higher fidelity VM-based execution
- **Dual Interface**:
- **CLI**: Command-line interface for automation and scripting
- **GUI**: Qt6-based graphical interface for visual inspection and interaction
## Technology Stack
- C++17
- Qt 6.6+
- CMake 3.22+
- Conan package manager
- Ninja build system
- yaml-cpp for workflow parsing
- Docker/Podman (optional, for container backend)
- QEMU (optional, for VM backend)
## Quick Start
See [BUILD.md](BUILD.md) for detailed build instructions.
```bash
# Install dependencies
conan install . --output-folder=build --build=missing
# Build
cmake --preset=default
cmake --build build
# Check system compatibility
./build/gwt doctor
# Run CLI
./build/gwt clone https://github.com/user/repo
./build/gwt workflows /path/to/repo
./build/gwt run /path/to/repo /path/to/workflow.yml
# Run GUI
./build/gwt-gui
```
## Architecture
### Core Components
- **StorageProvider**: Platform-specific storage path management
- **RepoManager**: Git repository cloning and management
- **WorkflowDiscovery**: Workflow file discovery
- **WorkflowParser**: YAML workflow parsing
- **JobExecutor**: Workflow execution orchestration
- **MatrixStrategy**: Matrix strategy expansion
- **ArtifactManager**: Artifact upload/download
- **CacheManager**: Cache management
### Backends
- **ContainerBackend**: Executes workflows in Docker/Podman containers
- **QemuBackend**: Executes workflows in QEMU virtual machines
## Repository Structure
```
GithubWorkflowTool/
├── CMakeLists.txt # Main CMake configuration
├── conanfile.txt # Conan dependencies
├── CMakePresets.json # CMake presets
├── include/ # Public headers
│ ├── core/ # Core functionality headers
│ ├── backends/ # Execution backend headers
│ ├── cli/ # CLI headers
│ └── gui/ # GUI headers
├── src/ # Implementation files
│ ├── core/ # Core functionality
│ ├── backends/ # Execution backends
│ ├── cli/ # CLI implementation
│ └── gui/ # GUI implementation
├── BUILD.md # Build instructions
└── README.md # This file
```
## Supported Platforms
- Windows 11+
- Linux (Ubuntu/Debian-based distributions)
- macOS (host support; VM images may have limitations)
## Limitations (v1)
GithubWorkflowTool v1 has intentional limitations to ensure deterministic, debuggable local execution:
- Not all GitHub Actions features are supported (see [LIMITATIONS.md](LIMITATIONS.md) §3.1)
- Some third-party actions may require container mode or preinstalled tools (§3.2)
- Service containers not yet implemented (§3.3)
- macOS runner images not supported (§3.4)
- Network access in runners may be limited (§3.5)
**Before running workflows locally**, use `gwt doctor` to check compatibility and get actionable guidance.
For detailed information, workarounds, and resolution roadmap, see **[LIMITATIONS.md](LIMITATIONS.md)**.
## License
See [LICENSE](LICENSE) file for details.
## Contributing
Contributions are welcome! Please ensure your code follows the existing style and includes appropriate tests.