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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user