mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 05:57:21 -05:00
Add comprehensive infrastructure management system to centralize all service definitions, deployment configurations, and operational tooling. ## New Infrastructure Components ### 1. Service Manifest (infra/blackroad-manifest.yml) - Complete catalog of all active and planned services - Deployment configuration for each service - Environment variable definitions - Domain mappings and routing - Database and cache dependencies - Health check endpoints - CI/CD integration specifications ### 2. Operations CLI (scripts/br_ops.py) - Command-line tool for managing all BlackRoad services - Commands: list, env, repo, open, status, health - Reads from service manifest for unified operations - Colored terminal output for better readability ### 3. Service Analysis Documents (infra/analysis/) - Detailed technical analysis for each service - Active services: - blackroad-backend.md (FastAPI backend) - postgres.md (PostgreSQL database) - redis.md (Redis cache) - docs-site.md (MkDocs documentation) - Planned services: - blackroad-api.md (API gateway - Phase 2) - prism-console.md (Admin console - Phase 2) ### 4. Infrastructure Templates (infra/templates/) - railway.toml.template - Railway deployment config - railway.json.template - Alternative Railway config - Dockerfile.fastapi.template - Multi-stage FastAPI Dockerfile - github-workflow-railway-deploy.yml.template - CI/CD workflow - .env.example.template - Comprehensive env var template ### 5. Documentation (infra/README.md) - Complete guide to infrastructure control plane - Usage instructions for ops CLI - Service manifest documentation - Deployment procedures - Troubleshooting guide - Phase 2 migration plan ## Architecture This establishes BlackRoad-Operating-System as the canonical control plane for all BlackRoad services, both current and planned: **Phase 1 (Active)**: - blackroad-backend (FastAPI + static UI) - postgres (Railway managed) - redis (Railway managed) - docs-site (GitHub Pages) **Phase 2 (Planned)**: - blackroad-api (API gateway) - blackroad-prism-console (Admin UI) - blackroad-agents (Orchestration) - blackroad-web (Marketing site) **Phase 3 (Future)**: - lucidia (AI orchestration) - Additional microservices ## Usage # List all services python scripts/br_ops.py list # Show environment variables python scripts/br_ops.py env blackroad-backend # Show repository info python scripts/br_ops.py repo blackroad-backend # Show service URL python scripts/br_ops.py open blackroad-backend prod # Show overall status python scripts/br_ops.py status # Show health checks python scripts/br_ops.py health blackroad-backend ## Benefits 1. **Single Source of Truth**: All service configuration in one manifest 2. **Unified Operations**: One CLI for all services 3. **Documentation**: Comprehensive per-service analysis 4. **Templates**: Reusable infrastructure patterns 5. **Migration Ready**: Clear path to Phase 2 microservices ## References - MASTER_ORCHESTRATION_PLAN.md - 7-layer architecture - ORG_STRUCTURE.md - Repository strategy - PRODUCTION_STACK_AUDIT_2025-11-18.md - Current state Implemented by: Atlas (AI Infrastructure Orchestrator) Date: 2025-11-19
94 lines
2.6 KiB
Plaintext
94 lines
2.6 KiB
Plaintext
name: Deploy to Railway
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- staging
|
|
- dev
|
|
paths:
|
|
- '**/*.py'
|
|
- 'requirements.txt'
|
|
- 'Dockerfile'
|
|
- 'railway.toml'
|
|
- 'railway.json'
|
|
- '.github/workflows/railway-deploy.yml'
|
|
|
|
workflow_dispatch:
|
|
inputs:
|
|
environment:
|
|
description: 'Deployment environment'
|
|
required: true
|
|
default: 'production'
|
|
type: choice
|
|
options:
|
|
- production
|
|
- staging
|
|
- development
|
|
|
|
jobs:
|
|
deploy:
|
|
name: Deploy to Railway
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Determine environment
|
|
id: env
|
|
run: |
|
|
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
|
echo "environment=${{ inputs.environment }}" >> $GITHUB_OUTPUT
|
|
elif [ "${{ github.ref }}" = "refs/heads/main" ]; then
|
|
echo "environment=production" >> $GITHUB_OUTPUT
|
|
elif [ "${{ github.ref }}" = "refs/heads/staging" ]; then
|
|
echo "environment=staging" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "environment=development" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Install Railway CLI
|
|
run: npm i -g @railway/cli
|
|
|
|
- name: Deploy to Railway
|
|
env:
|
|
RAILWAY_TOKEN: ${{ secrets.RAILWAY_TOKEN }}
|
|
run: |
|
|
railway up --service ${{ secrets.RAILWAY_SERVICE_NAME }} \
|
|
--environment ${{ steps.env.outputs.environment }} \
|
|
--ci
|
|
|
|
- name: Wait for deployment
|
|
run: sleep 30
|
|
|
|
- name: Health check
|
|
run: |
|
|
if [ "${{ steps.env.outputs.environment }}" = "production" ]; then
|
|
HEALTH_URL="https://${{ secrets.PRODUCTION_DOMAIN }}/health"
|
|
elif [ "${{ steps.env.outputs.environment }}" = "staging" ]; then
|
|
HEALTH_URL="https://${{ secrets.STAGING_DOMAIN }}/health"
|
|
else
|
|
HEALTH_URL="${{ secrets.DEV_DOMAIN }}/health"
|
|
fi
|
|
|
|
echo "Checking health at: $HEALTH_URL"
|
|
|
|
for i in {1..10}; do
|
|
if curl -f "$HEALTH_URL"; then
|
|
echo "✅ Health check passed!"
|
|
exit 0
|
|
fi
|
|
echo "Attempt $i failed, retrying in 10s..."
|
|
sleep 10
|
|
done
|
|
|
|
echo "❌ Health check failed after 10 attempts"
|
|
exit 1
|
|
|
|
- name: Notify on failure
|
|
if: failure()
|
|
run: |
|
|
echo "::error::Deployment to ${{ steps.env.outputs.environment }} failed!"
|
|
# Add notification logic here (Slack, Discord, email, etc.)
|