Class: Clacky::DeployTools::ExecuteDeployment
- Inherits:
-
Object
- Object
- Clacky::DeployTools::ExecuteDeployment
- Defined in:
- lib/clacky/default_skills/deploy/tools/execute_deployment.rb
Overview
Trigger a Railway deployment via ‘railway up` (blocking, with live logs). Uses RAILWAY_TOKEN passed through environment — no clackycli wrapper needed.
Class Method Summary collapse
-
.execute(service_name:, platform_token:) ⇒ Hash
Trigger deployment for a service (blocking - waits for completion).
Class Method Details
.execute(service_name:, platform_token:) ⇒ Hash
Trigger deployment for a service (blocking - waits for completion).
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/clacky/default_skills/deploy/tools/execute_deployment.rb', line 14 def self.execute(service_name:, platform_token:) if service_name.nil? || service_name.strip.empty? return { success: false, error: "service_name is required" } end if platform_token.nil? || platform_token.strip.empty? return { success: false, error: "platform_token is required" } end puts "🚀 Deploying service: #{service_name}" puts " (This may take several minutes - you'll see live build logs below)" puts "" env = { "RAILWAY_TOKEN" => platform_token } # Use railway up without --detach to block and show live logs success = system( env, "railway", "up", "--service", service_name, in: :close # Don't redirect stdout/stderr - let user see live logs ) if success puts "" puts "✅ Deployment completed successfully" # Extract URL from railway status after successful deployment url = extract_url(env, service_name) return { success: true, url: url } else puts "" puts "❌ Deployment failed" return { success: false, error: "railway up exited with error code" } end rescue => e { success: false, error: "Unexpected error: #{e.}" } end |