Skip to content

Implement ReleaseCommand and RunCommand with vertical slices #216

Description

@josecelano

Overview

This epic tracks the implementation of roadmap task 3.2: Implement ReleaseCommand and RunCommand with vertical slices.

The goal is to add two new application commands:

  • release: Copy docker-compose configuration to the provisioned VM
  • run: Execute docker compose up -d to start the services

Strategy

Build incrementally with working deployments at each step. Each slice adds a new service to the docker-compose stack, delivering value progressively.

Roadmap Reference

From docs/roadmap.md:

3.2 Implement ReleaseCommand and RunCommand with vertical slices

Strategy: Build incrementally with working deployments at each step. Each slice adds a new service to the docker-compose stack.

  • 3.2.1 Hello World slice (scaffolding)
  • 3.2.2 Torrust Tracker slice
  • 3.2.3 MySQL slice
  • 3.2.4 Prometheus slice
  • 3.2.5 Grafana slice

Tasks

Slices will be implemented sequentially, each delivering a working deployment:

Implementation Approach

Each slice follows this pattern:

  1. Hardcoded first: Start with fixed configuration to validate the pipeline
  2. Add environment config: Progressively expose configuration options
  3. Full flexibility: Add advanced options as needed

This ensures we always have a working deployment while incrementally adding complexity.

Related

Reference Implementation

The torrust-demo repository contains the current Torrust Tracker Demo configuration and serves as a reference for this implementation:

  • compose.yaml - Docker Compose configuration for the full stack
  • share/ - Service configurations (tracker, MySQL, Prometheus, Grafana, etc.)

These will be consulted when creating subissues for each slice.

Progress

Completed: 4 out of 5 slices (80%)

Notes

  • Each slice requires new templates, template Rust wrappers, and potentially new environment options
  • Configuration complexity grows incrementally across slices
  • Detailed implementation tasks will be defined in subissues for each slice

Metadata

Metadata

Assignees

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions