diff --git a/.env.example b/.env.example index 22246e0..b167021 100644 --- a/.env.example +++ b/.env.example @@ -15,5 +15,9 @@ ADMIN_SECRETS=your_admin_secret_here # USER_SECRETS=user_secret_1,user_secret_2 # REGISTER_SECRETS=register_secret_1 +# Optional: Pre-configured runners (comma-separated names) +# These runners will be automatically registered on startup +# RUNNERS=runner1,runner2,runner3 + # Optional: Mycelium network URL (requires mycelium feature) # MYCELIUM_URL=http://127.0.0.1:8989 diff --git a/core/src/bin/supervisor.rs b/core/src/bin/supervisor.rs index f2789ab..a9edae9 100644 --- a/core/src/bin/supervisor.rs +++ b/core/src/bin/supervisor.rs @@ -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, } #[tokio::main] @@ -51,6 +55,9 @@ async fn main() -> Result<(), Box> { 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> { 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; diff --git a/scripts/run.sh b/scripts/run.sh index a40abb2..75645ba 100755 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -93,6 +93,11 @@ if [ ! -z "$MYCELIUM_URL" ]; then SUPERVISOR_CMD="$SUPERVISOR_CMD --mycelium-url $MYCELIUM_URL" fi +# Add runners if provided +if [ ! -z "$RUNNERS" ]; then + SUPERVISOR_CMD="$SUPERVISOR_CMD --runners $RUNNERS" +fi + RUST_LOG="$LOG_LEVEL" RUST_LOG_STYLE=never $SUPERVISOR_CMD > /tmp/supervisor-run.log 2>&1 & SUPERVISOR_PID=$!