انتقل إلى المحتوى الرئيسي

خط أنابيب 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 --from=builder /usr/local/lib/python3.12 /usr/local/lib/python3.12
COPY --from=builder /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 --from=builder /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 --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
EXPOSE 3000
CMD ["node", "server.js"]

شبكات Docker Compose

أربع شبكات معزولة:

  1. aurora-frontend — Dashboard ↔ API only
  2. aurora-backend — API ↔ Agents internal communication
  3. aurora-data — Database access (Postgres, Redis, Qdrant)
  4. 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 تلقائيًا من جذر المشروع.