خط أنابيب CI/CD
يستخدم AuroraSOC ملف Makefile للتطوير المحلي وDocker Compose للنشر. يشرح هذا المستند سير عمل البناء والاختبار والنشر.
أهداف Makefile
يوفّر ملف Makefile في جذر المشروع أوامر للتطوير المحلي والتحقق والنشر.
استخدم make help لعرض جميع الأهداف المتاحة.
التطوير المحلي
# تثبيت الاعتماديات
make install
make dev
# تشغيل الخدمات محليًا
make api # FastAPI on :8000
make dashboard-dev # Next.js on :3000
make dev-all # API + dashboard في جلسة واحدة
make mcp # MCP Tool Registry server
البنية التحتية (Docker Compose)
make docker-up # تشغيل كامل المكدس
make docker-up-minimal # تشغيل المكدس الأدنى (orchestrator + network analyzer)
make docker-down # إيقاف المكدس
make docker-logs # متابعة السجلات
make docker-build # بناء صور Docker
الاختبارات والجودة
make test
make test-cov
make lint
make type-check
make check
make rust-test
make rust-clippy
make dashboard-lint
البناء وقاعدة البيانات
make rust-build
make dashboard-build
make migrate
make migrate-new MSG="Add new table"
make migrate-down
Docs CI/CD
يتم تشغيل خط توثيق المستندات عبر GitHub Actions:
.github/workflows/docs.ymlلتدقيق الجودة والبناء عند تغييرات التوثيق.- نفس المسار ينشر إلى GitHub Pages على فرع
main. workflow_dispatchمتاح للتشغيل اليدوي عند الحاجة.
بنية بناء Docker
Python Dockerfile (Dockerfile.python)
FROM python:3.12-slim AS builder
WORKDIR /app
COPY pyproject.toml .
RUN pip install --no-cache-dir -e ".[all]"
FROM python:3.12-slim
WORKDIR /app
COPY /usr/local/lib/python3.12 /usr/local/lib/python3.12
COPY /usr/local/bin /usr/local/bin
COPY aurorasoc/ aurorasoc/
COPY alembic/ alembic/
COPY alembic.ini .
EXPOSE 8000
CMD ["uvicorn", "aurorasoc.api.main:app", "--host", "0.0.0.0", "--port", "8000"]
Rust Dockerfile (Dockerfile.rust)
FROM rust:1.77-bookworm AS builder
WORKDIR /app
COPY rust_core/ .
RUN cargo build --release
FROM debian:bookworm-slim
COPY /app/target/release/aurora-core /usr/local/bin/
EXPOSE 8080
CMD ["aurora-core"]
Dashboard Dockerfile (Dockerfile.dashboard)
FROM node:22-alpine AS builder
WORKDIR /app
COPY dashboard/package.json dashboard/package-lock.json ./
RUN npm ci
COPY dashboard/ .
RUN npm run build
FROM node:22-alpine
WORKDIR /app
COPY /app/.next/standalone ./
COPY /app/.next/static ./.next/static
EXPOSE 3000
CMD ["node", "server.js"]
شبكات Docker Compose
أربع شبكات معزولة:
- aurora-frontend — Dashboard ↔ API only
- aurora-backend — API ↔ Agents internal communication
- aurora-data — Database access (Postgres, Redis, Qdrant)
- aurora-messaging — Event buses (NATS, MQTT)
سير عمل التطوير
إعادة التحميل الفوري
يتم في وضع التطوير تركيب الشيفرة المصدرية كـ volumes لتفعيل إعادة التحميل الفوري:
# docker-compose.dev.yml
api:
volumes:
- ./aurorasoc:/app/aurorasoc
command: uvicorn aurorasoc.api.main:app --reload --host 0.0.0.0
dashboard:
volumes:
- ./dashboard/src:/app/src
command: npm run dev
إعدادات البيئة
متغيرات البيئة المطلوبة
# ابدأ من القالب
cp .env.example .env
# أدوات تهيئة اختيارية
make env-init
make env-check
# Core auth
JWT_SECRET_KEY=<generate-with-openssl-rand-hex-32>
API_SERVICE_KEY=<generate-a-secure-random-key>
# Database and messaging
PG_HOST=localhost
PG_PORT=5432
PG_DATABASE=aurorasoc
PG_USER=aurorasoc
PG_PASSWORD=<set-a-strong-password>
REDIS_URL=redis://:<set-a-strong-password>@localhost:6379
NATS_URL=nats://localhost:4222
# LLM backend selection
LLM_BACKEND=vllm
VLLM_BASE_URL=http://vllm:8000/v1
VLLM_MODEL=granite-soc-specialist
VLLM_ORCHESTRATOR_MODEL=granite-soc-specialist
# Ollama fallback
OLLAMA_BASE_URL=http://ollama:11434
OLLAMA_MODEL=granite4:8b
OLLAMA_ORCHESTRATOR_MODEL=granite4:dense
استخدام ملف .env
cp .env.example .env
# Edit with your values
vim .env
يقوم Docker Compose بقراءة .env تلقائيًا من جذر المشروع.