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
35 lines
1.0 KiB
TypeScript
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
|
|
);
|