Files
Wisecolt-CI/backend/src/models/deploymentRun.ts
wisecolt e5fd3bd9d5 feat(deployments): docker tabanlı proje yönetim ve otomatik deploy sistemi ekle
Docker Compose projeleri için tam kapsamlı yönetim paneli ve otomatik deployment altyapısı eklendi.

Sistem özellikleri:
- Belirtilen root dizin altındaki docker-compose dosyası içeren projeleri tarama
- Git repo bağlantısı ile branch yönetimi ve klonlama/pull işlemleri
- Docker compose up/down komutları ile otomatik deploy
- Gitea webhook entegrasyonu ile commit bazlı tetikleme
- Deploy geçmişi, log kayıtları ve durum takibi (running/success/failed)
- Deploy metrikleri ve dashboard görselleştirmesi
- Webhook token ve secret yönetimi ile güvenlik
- Proje favicon servisi

Teknik değişiklikler:
- Backend: deploymentProject, deploymentRun ve settings modelleri eklendi
- Backend: deploymentService ile git ve docker işlemleri otomatize edildi
- Backend: webhook doğrulaması için signature kontrolü eklendi
- Docker: docker-cli ve docker-compose bağımlılıkları eklendi
- Frontend: deployments ve settings sayfaları eklendi
- Frontend: dashboard'a deploy metrikleri ve aktivite akışı eklendi
- API: /api/deployments ve /api/settings yolları eklendi
2026-01-18 16:24:11 +03:00

35 lines
1.0 KiB
TypeScript

import mongoose, { Schema, Document, Types } from "mongoose";
import { DeploymentProjectDocument } from "./deploymentProject.js";
export interface DeploymentRunDocument extends Document {
project: Types.ObjectId | DeploymentProjectDocument;
status: "running" | "success" | "failed";
message?: string;
logs: string[];
startedAt: Date;
finishedAt?: Date;
durationMs?: number;
createdAt: Date;
updatedAt: Date;
}
const DeploymentRunSchema = new Schema<DeploymentRunDocument>(
{
project: { type: Schema.Types.ObjectId, ref: "DeploymentProject", required: true },
status: { type: String, enum: ["running", "success", "failed"], required: true },
message: { type: String },
logs: { type: [String], default: [] },
startedAt: { type: Date, required: true },
finishedAt: { type: Date },
durationMs: { type: Number }
},
{ timestamps: true }
);
DeploymentRunSchema.index({ project: 1, startedAt: -1 });
export const DeploymentRun = mongoose.model<DeploymentRunDocument>(
"DeploymentRun",
DeploymentRunSchema
);