Open
Description
Summary
Add a new action type build
to DLoad that enables building a software. In this case it will build a custom RoadRunner binaries with specific plugins using the Velox build tool.
Background
RoadRunner can be built with custom plugins using Velox - a build automation tool. Currently, DLoad only supports downloading pre-built binaries, but many projects need custom RoadRunner builds with specific plugin combinations.
Proposed Solution
New XML Action Configuration
Local config file:
<velox config-file="./velox.toml" />
Remote config via API:
<velox velox-version="^1.4.0" golang-version="^1.22" rr-version="2024.1.5">
<plugin name="temporal" version="^4.2.1" owner="temporalio" repository="roadrunner-temporal" />
<plugin name="metrics" version="^4.0.4" owner="roadrunner-server" repository="metrics" />
<plugin name="http" />
<plugin name="logger" version="^4.1.3" />
<plugin name="custom-plugin" owner="my-org" repository="rr-custom-plugin" />
</velox>
Mixed approach:
<velox config-file="./velox.toml" velox-version="^1.4.0" binary-version="2024.1.5">
<plugin name="custom-plugin" owner="my-org" />
</velox>
Action Attributes
velox-version
- Version of velox build tool (optional)golang-version
- Required Go version (optional)binary-version
- RoadRunner version to display inrr --version
(optional)config-file
- Path to local velox.toml file (optional)
Plugin Attributes
name
- Plugin name (required)version
- Plugin version (optional)owner
- Repository owner (optional)repository
- Repository name (optional)
Expected Behavior
- Check for local config: If
config-file
exists, use it as base - Download dependencies: Automatically download Golang and Velox if missing
- Generate config: Get velox.toml from API using plugin list and versions
- Merge configs: Combine local config with API response if both exist
- Build RoadRunner: Execute velox build command
- Cleanup: Remove temporary files after successful build
Benefits
- Enables custom RoadRunner builds in development workflows
- Integrates with existing DLoad configuration system
- Supports both local and remote configuration sources
- Maintains compatibility with current DLoad features