Add support for pre-configured runners from environment variables

- Added RUNNERS env var to .env.example (comma-separated runner names)
- Updated supervisor binary to accept --runners flag
- Runners are automatically registered on startup using first admin secret
- Updated run.sh to pass RUNNERS from env to supervisor binary
This commit is contained in:
Timur Gordon
2025-11-07 00:15:22 +01:00
parent 609af6ec15
commit 278ba18d20
3 changed files with 27 additions and 1 deletions

View File

@@ -44,6 +44,10 @@ struct Args {
/// Mycelium topic for supervisor RPC messages
#[arg(long, default_value = "supervisor.rpc")]
topic: String,
/// Pre-configured runner names (comma-separated)
#[arg(long, value_name = "NAMES", value_delimiter = ',')]
runners: Vec<String>,
}
#[tokio::main]
@@ -51,6 +55,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
env_logger::init();
let args = Args::parse();
// Store first admin secret for runner registration
let admin_secret = args.admin_secrets[0].clone();
// Build supervisor
let mut builder = SupervisorBuilder::new()
.redis_url(&args.redis_url)
@@ -65,7 +72,17 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
builder = builder.register_secrets(args.register_secrets);
}
let supervisor = builder.build().await?;
let mut supervisor = builder.build().await?;
// Register pre-configured runners using first admin secret
if !args.runners.is_empty() {
for runner_name in &args.runners {
match supervisor.register_runner(&admin_secret, runner_name, &format!("queue:{}", runner_name)).await {
Ok(_) => {},
Err(e) => error!("Failed to register runner '{}': {}", runner_name, e),
}
}
}
// Start OpenRPC server
use std::sync::Arc;