Skip to content

Add build or velox action #60

Open
@roxblnfk

Description

@roxblnfk

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 in rr --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

  1. Check for local config: If config-file exists, use it as base
  2. Download dependencies: Automatically download Golang and Velox if missing
  3. Generate config: Get velox.toml from API using plugin list and versions
  4. Merge configs: Combine local config with API response if both exist
  5. Build RoadRunner: Execute velox build command
  6. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions