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