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
This commit is contained in:
34
backend/src/models/deploymentRun.ts
Normal file
34
backend/src/models/deploymentRun.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
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
|
||||
);
|
||||
Reference in New Issue
Block a user