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

@@ -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

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;

View File

@@ -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=$!