Overview
This task implements the foundational scaffolding for the release and run commands using a minimal docker-compose deployment with nginx. The goal is to validate the full pipeline (release → run → verify) before adding complexity with the actual Torrust Tracker services.
Parent Epic: #216
Goals
Architecture Overview
State Transitions
The environment lifecycle extends with new states:
Configured → Releasing → Released → Starting → Running
↓ ↓ ↓
ReleaseFailed StartFailed RunFailed
Three-Level Architecture
Following the existing pattern:
- Command Handlers (Level 1):
ReleaseCommandHandler, RunCommandHandler
- Steps (Level 2):
PrepareComposeFilesStep, TransferFilesStep, StartServicesStep
- Remote Actions (Level 3): SSH file transfer, docker compose commands
Implementation Plan
This issue follows an outside-in approach with 10 phases. Each phase produces a runnable command that can be E2E tested.
See full specification: docs/issues/demo-slice-release-run-commands.md
Acceptance Criteria
Functional Requirements
Quality Requirements
Overview
This task implements the foundational scaffolding for the
releaseandruncommands using a minimal docker-compose deployment with nginx. The goal is to validate the full pipeline (release → run → verify) before adding complexity with the actual Torrust Tracker services.Parent Epic: #216
Goals
ReleaseCommandHandler(App layer) with state transitionsRunCommandHandler(App layer) with state transitionsreleaseCLI subcommand (Presentation layer)runCLI subcommand (Presentation layer)e2e_config_tests.rs→e2e_config_and_release_tests.rsand extende2e_tests_full.rsto include release and run commandsArchitecture Overview
State Transitions
The environment lifecycle extends with new states:
Three-Level Architecture
Following the existing pattern:
ReleaseCommandHandler,RunCommandHandlerPrepareComposeFilesStep,TransferFilesStep,StartServicesStepImplementation Plan
This issue follows an outside-in approach with 10 phases. Each phase produces a runnable command that can be E2E tested.
See full specification:
docs/issues/demo-slice-release-run-commands.mdAcceptance Criteria
Functional Requirements
releasecommand copies docker-compose.yml to configured VMruncommand starts docker-compose services on VMQuality Requirements
.help()