2.4 KiB
Deployment Orchestration
The BlackRoad-Operating-System repository is the control plane for deploying the wider BlackRoad OS services. It contains a single registry of services, simple TypeScript utilities for deploys and health checks, and a GitHub Actions workflow for one-click releases.
Service registry
Service metadata lives in infra/services.json. Each entry includes the repository location, Railway project and service names, and the health endpoint for monitoring.
Adding a new service
- Add a new object to
infra/services.jsonwith the required fields (id,name,repo,kind,railwayProject,railwayService,domain,healthPath). - Ensure the Railway project and service names match the target deployment.
- Include the service
idin the deploy order insidescripts/deployAll.tsif it should participate in the sequential rollout.
Local commands
Install dependencies once with npm install, then use:
npm run deploy:all— deploys all services sequentially via Railway.npm run deploy:service -- <serviceId>— deploys a single service from the registry.npm run health:all— checks the health endpoints for every registered service.
GitHub Actions
Use the Deploy All workflow in the Actions tab (.github/workflows/deploy-all.yml).
- Trigger manually with Run workflow to deploy every service.
- Provide the optional
serviceIdinput to deploy just one service usingdeploy:service. - Deployments expect
RAILWAY_TOKENto be available as a GitHub Actions secret and run withNODE_ENV=production.
BlackRoad OS Deployment
This repo is the orchestrator for all BlackRoad OS services.
Commands
-
npm run deploy:all
Deploys all services (core, api, operator, agents, console, web, docs) via Railway. -
npm run deploy:service -- core
Deploy only a single service byid. -
npm run health:all
Check health endpoints for all services using their public domains.
Service Registry
All services are defined in infra/services.json.
To add or change a service:
- Edit
infra/services.jsonand update:idrailwayProjectrailwayServicedomainhealthPath
- Make sure the Railway project/service names match.
- Commit and push your changes.
GitHub Actions
The workflow .github/workflows/deploy-all.yml lets you:
- Trigger Deploy BlackRoad OS from the Actions tab.
- Optionally pass
serviceIdto deploy just one service.