gitship-core 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/db.d.ts +11 -13
- package/dist/db.js +182 -257
- package/dist/db.js.map +1 -1
- package/dist/paths.js +1 -1
- package/dist/paths.js.map +1 -1
- package/package.json +1 -3
package/dist/db.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import Database from "better-sqlite3";
|
|
2
1
|
import { Project, Webhook, Deployment, DeploymentStep, DeploymentStatus } from "gitship-shared";
|
|
3
|
-
export
|
|
2
|
+
export interface ProjectStats {
|
|
3
|
+
totalDeployments: number;
|
|
4
|
+
successRate: number;
|
|
5
|
+
avgDeployTimeMs: number;
|
|
6
|
+
avgBuildTimeMs: number;
|
|
7
|
+
slowestDeployMs: number;
|
|
8
|
+
fastestDeployMs: number;
|
|
9
|
+
}
|
|
4
10
|
export declare function addProject(project: Omit<Project, "created_at" | "updated_at">): Project;
|
|
5
11
|
export declare function getProject(idOrName: string): Project | null;
|
|
6
12
|
export declare function getProjects(): Project[];
|
|
@@ -8,24 +14,16 @@ export declare function removeProject(id: string): void;
|
|
|
8
14
|
export declare function saveWebhook(webhook: Webhook): void;
|
|
9
15
|
export declare function getWebhookByProjectId(projectId: string): Webhook | null;
|
|
10
16
|
export declare function createDeployment(deployment: Omit<Deployment, "created_at">): Deployment;
|
|
11
|
-
export declare function updateDeploymentStatus(id: string, status: DeploymentStatus, fields?: Partial<Deployment>): void;
|
|
12
17
|
export declare function getDeployment(id: string): Deployment | null;
|
|
13
18
|
export declare function getDeployments(projectId?: string, limit?: number): Deployment[];
|
|
14
19
|
export declare function getQueuedDeployments(projectId: string): Deployment[];
|
|
15
20
|
export declare function getRunningDeployment(projectId: string): Deployment | null;
|
|
21
|
+
export declare function updateDeploymentStatus(id: string, status: DeploymentStatus, extraFields?: Partial<Omit<Deployment, "id" | "status">>): void;
|
|
16
22
|
export declare function createDeploymentStep(step: DeploymentStep): void;
|
|
17
|
-
export declare function updateDeploymentStep(id: string,
|
|
23
|
+
export declare function updateDeploymentStep(id: string, updates: Partial<Omit<DeploymentStep, "id">>): void;
|
|
18
24
|
export declare function getDeploymentSteps(deploymentId: string): DeploymentStep[];
|
|
19
|
-
export declare function appendDeploymentLog(deploymentId: string,
|
|
25
|
+
export declare function appendDeploymentLog(deploymentId: string, logText: string): void;
|
|
20
26
|
export declare function getDeploymentLog(deploymentId: string): string | null;
|
|
21
|
-
export interface ProjectStats {
|
|
22
|
-
totalDeployments: number;
|
|
23
|
-
successRate: number;
|
|
24
|
-
avgDeployTimeMs: number;
|
|
25
|
-
avgBuildTimeMs: number;
|
|
26
|
-
slowestDeployMs: number;
|
|
27
|
-
fastestDeployMs: number;
|
|
28
|
-
}
|
|
29
27
|
export declare function getStats(projectId?: string): ProjectStats;
|
|
30
28
|
export declare function isWebhookDeliveryProcessed(id: string): boolean;
|
|
31
29
|
export declare function recordWebhookDelivery(id: string): void;
|
package/dist/db.js
CHANGED
|
@@ -1,277 +1,198 @@
|
|
|
1
|
-
import Database from "better-sqlite3";
|
|
2
1
|
import fs from "fs";
|
|
3
2
|
import { DB_PATH, ensureDirsExist } from "./paths.js";
|
|
4
|
-
|
|
5
|
-
export function getDb() {
|
|
6
|
-
if (dbInstance)
|
|
7
|
-
return dbInstance;
|
|
3
|
+
function readDb() {
|
|
8
4
|
ensureDirsExist();
|
|
9
|
-
|
|
5
|
+
if (!fs.existsSync(DB_PATH)) {
|
|
6
|
+
const empty = {
|
|
7
|
+
projects: [],
|
|
8
|
+
webhooks: [],
|
|
9
|
+
deployments: [],
|
|
10
|
+
deployment_steps: [],
|
|
11
|
+
deployment_logs: {},
|
|
12
|
+
webhook_deliveries: [],
|
|
13
|
+
};
|
|
14
|
+
writeDb(empty);
|
|
15
|
+
return empty;
|
|
16
|
+
}
|
|
10
17
|
try {
|
|
11
|
-
fs.
|
|
18
|
+
const raw = fs.readFileSync(DB_PATH, "utf-8");
|
|
19
|
+
return JSON.parse(raw);
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
const empty = {
|
|
23
|
+
projects: [],
|
|
24
|
+
webhooks: [],
|
|
25
|
+
deployments: [],
|
|
26
|
+
deployment_steps: [],
|
|
27
|
+
deployment_logs: {},
|
|
28
|
+
webhook_deliveries: [],
|
|
29
|
+
};
|
|
30
|
+
writeDb(empty);
|
|
31
|
+
return empty;
|
|
12
32
|
}
|
|
13
|
-
catch { }
|
|
14
|
-
dbInstance.pragma("journal_mode = WAL");
|
|
15
|
-
dbInstance.pragma("foreign_keys = ON");
|
|
16
|
-
initDb(dbInstance);
|
|
17
|
-
return dbInstance;
|
|
18
33
|
}
|
|
19
|
-
function
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
target_host TEXT,
|
|
29
|
-
target_path TEXT NOT NULL,
|
|
30
|
-
install_cmd TEXT,
|
|
31
|
-
build_cmd TEXT,
|
|
32
|
-
restart_cmd TEXT,
|
|
33
|
-
healthcheck_path TEXT,
|
|
34
|
-
healthcheck_port INTEGER,
|
|
35
|
-
healthcheck_retries INTEGER,
|
|
36
|
-
healthcheck_interval_ms INTEGER,
|
|
37
|
-
healthcheck_timeout_ms INTEGER,
|
|
38
|
-
webhook_secret TEXT NOT NULL,
|
|
39
|
-
created_at INTEGER NOT NULL,
|
|
40
|
-
updated_at INTEGER NOT NULL
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
CREATE TABLE IF NOT EXISTS webhooks (
|
|
44
|
-
id TEXT PRIMARY KEY,
|
|
45
|
-
project_id TEXT NOT NULL,
|
|
46
|
-
github_webhook_id INTEGER,
|
|
47
|
-
url TEXT NOT NULL,
|
|
48
|
-
secret TEXT NOT NULL,
|
|
49
|
-
active INTEGER NOT NULL DEFAULT 1,
|
|
50
|
-
created_at INTEGER NOT NULL,
|
|
51
|
-
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
CREATE TABLE IF NOT EXISTS deployments (
|
|
55
|
-
id TEXT PRIMARY KEY,
|
|
56
|
-
project_id TEXT NOT NULL,
|
|
57
|
-
branch TEXT NOT NULL,
|
|
58
|
-
commit_sha TEXT,
|
|
59
|
-
commit_message TEXT,
|
|
60
|
-
author TEXT,
|
|
61
|
-
status TEXT NOT NULL,
|
|
62
|
-
started_at INTEGER,
|
|
63
|
-
finished_at INTEGER,
|
|
64
|
-
total_duration_ms INTEGER,
|
|
65
|
-
rollback_of_id TEXT,
|
|
66
|
-
created_at INTEGER NOT NULL,
|
|
67
|
-
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
CREATE TABLE IF NOT EXISTS deployment_steps (
|
|
71
|
-
id TEXT PRIMARY KEY,
|
|
72
|
-
deployment_id TEXT NOT NULL,
|
|
73
|
-
step_name TEXT NOT NULL,
|
|
74
|
-
status TEXT NOT NULL,
|
|
75
|
-
started_at INTEGER,
|
|
76
|
-
finished_at INTEGER,
|
|
77
|
-
duration_ms INTEGER,
|
|
78
|
-
FOREIGN KEY (deployment_id) REFERENCES deployments(id) ON DELETE CASCADE
|
|
79
|
-
);
|
|
80
|
-
|
|
81
|
-
CREATE TABLE IF NOT EXISTS deployment_logs (
|
|
82
|
-
deployment_id TEXT PRIMARY KEY,
|
|
83
|
-
log_data TEXT NOT NULL,
|
|
84
|
-
FOREIGN KEY (deployment_id) REFERENCES deployments(id) ON DELETE CASCADE
|
|
85
|
-
);
|
|
86
|
-
|
|
87
|
-
CREATE TABLE IF NOT EXISTS webhook_deliveries (
|
|
88
|
-
id TEXT PRIMARY KEY,
|
|
89
|
-
created_at INTEGER NOT NULL
|
|
90
|
-
);
|
|
91
|
-
`);
|
|
34
|
+
function writeDb(data) {
|
|
35
|
+
ensureDirsExist();
|
|
36
|
+
const tempPath = `${DB_PATH}.tmp`;
|
|
37
|
+
fs.writeFileSync(tempPath, JSON.stringify(data, null, 2), "utf-8");
|
|
38
|
+
try {
|
|
39
|
+
fs.chmodSync(tempPath, 0o600);
|
|
40
|
+
}
|
|
41
|
+
catch { }
|
|
42
|
+
fs.renameSync(tempPath, DB_PATH);
|
|
92
43
|
}
|
|
93
44
|
// Project Repositories
|
|
94
45
|
export function addProject(project) {
|
|
95
|
-
const
|
|
46
|
+
const data = readDb();
|
|
96
47
|
const now = Date.now();
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
updated_at = excluded.updated_at
|
|
118
|
-
`);
|
|
119
|
-
stmt.run(fullProject.id, fullProject.name, fullProject.owner, fullProject.repo, fullProject.branch, fullProject.target_type, fullProject.target_host || null, fullProject.target_path, fullProject.install_cmd || null, fullProject.build_cmd || null, fullProject.restart_cmd || null, fullProject.healthcheck_path || null, fullProject.healthcheck_port || null, fullProject.healthcheck_retries || null, fullProject.healthcheck_interval_ms || null, fullProject.healthcheck_timeout_ms || null, fullProject.webhook_secret, fullProject.created_at, fullProject.updated_at);
|
|
48
|
+
const existingIndex = data.projects.findIndex(p => p.name === project.name || p.id === project.id);
|
|
49
|
+
let fullProject;
|
|
50
|
+
if (existingIndex !== -1) {
|
|
51
|
+
const oldProj = data.projects[existingIndex];
|
|
52
|
+
fullProject = {
|
|
53
|
+
...oldProj,
|
|
54
|
+
...project,
|
|
55
|
+
updated_at: now,
|
|
56
|
+
};
|
|
57
|
+
data.projects[existingIndex] = fullProject;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
fullProject = {
|
|
61
|
+
...project,
|
|
62
|
+
created_at: now,
|
|
63
|
+
updated_at: now,
|
|
64
|
+
};
|
|
65
|
+
data.projects.push(fullProject);
|
|
66
|
+
}
|
|
67
|
+
writeDb(data);
|
|
120
68
|
return fullProject;
|
|
121
69
|
}
|
|
122
70
|
export function getProject(idOrName) {
|
|
123
|
-
const
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
return res || null;
|
|
71
|
+
const data = readDb();
|
|
72
|
+
const found = data.projects.find(p => p.id === idOrName || p.name === idOrName);
|
|
73
|
+
return found || null;
|
|
127
74
|
}
|
|
128
75
|
export function getProjects() {
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
return stmt.all();
|
|
76
|
+
const data = readDb();
|
|
77
|
+
return [...data.projects].sort((a, b) => a.name.localeCompare(b.name));
|
|
132
78
|
}
|
|
133
79
|
export function removeProject(id) {
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
80
|
+
const data = readDb();
|
|
81
|
+
data.projects = data.projects.filter(p => p.id !== id);
|
|
82
|
+
data.webhooks = data.webhooks.filter(w => w.project_id !== id);
|
|
83
|
+
const depIds = data.deployments.filter(d => d.project_id === id).map(d => d.id);
|
|
84
|
+
data.deployments = data.deployments.filter(d => d.project_id !== id);
|
|
85
|
+
data.deployment_steps = data.deployment_steps.filter(ds => !depIds.includes(ds.deployment_id));
|
|
86
|
+
for (const depId of depIds) {
|
|
87
|
+
delete data.deployment_logs[depId];
|
|
88
|
+
}
|
|
89
|
+
writeDb(data);
|
|
137
90
|
}
|
|
138
91
|
// Webhook Repositories
|
|
139
92
|
export function saveWebhook(webhook) {
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
`);
|
|
150
|
-
stmt.run(webhook.id, webhook.project_id, webhook.github_webhook_id, webhook.url, webhook.secret, webhook.active ? 1 : 0, webhook.created_at);
|
|
93
|
+
const data = readDb();
|
|
94
|
+
const idx = data.webhooks.findIndex(w => w.id === webhook.id);
|
|
95
|
+
if (idx !== -1) {
|
|
96
|
+
data.webhooks[idx] = { ...data.webhooks[idx], ...webhook };
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
data.webhooks.push(webhook);
|
|
100
|
+
}
|
|
101
|
+
writeDb(data);
|
|
151
102
|
}
|
|
152
103
|
export function getWebhookByProjectId(projectId) {
|
|
153
|
-
const
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
if (!res)
|
|
157
|
-
return null;
|
|
158
|
-
return {
|
|
159
|
-
...res,
|
|
160
|
-
active: res.active === 1,
|
|
161
|
-
};
|
|
104
|
+
const data = readDb();
|
|
105
|
+
const found = data.webhooks.find(w => w.project_id === projectId);
|
|
106
|
+
return found || null;
|
|
162
107
|
}
|
|
163
108
|
// Deployment Repositories
|
|
164
109
|
export function createDeployment(deployment) {
|
|
165
|
-
const
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
INSERT INTO deployments (id, project_id, branch, commit_sha, commit_message, author, status, started_at, finished_at, total_duration_ms, rollback_of_id, created_at)
|
|
170
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
171
|
-
`);
|
|
172
|
-
stmt.run(fullDeployment.id, fullDeployment.project_id, fullDeployment.branch, fullDeployment.commit_sha || null, fullDeployment.commit_message || null, fullDeployment.author || null, fullDeployment.status, fullDeployment.started_at || null, fullDeployment.finished_at || null, fullDeployment.total_duration_ms || null, fullDeployment.rollback_of_id || null, fullDeployment.created_at);
|
|
173
|
-
// Initialize empty logs for this deployment
|
|
174
|
-
const logStmt = db.prepare("INSERT INTO deployment_logs (deployment_id, log_data) VALUES (?, ?)");
|
|
175
|
-
logStmt.run(fullDeployment.id, "");
|
|
110
|
+
const data = readDb();
|
|
111
|
+
const fullDeployment = { ...deployment, created_at: Date.now() };
|
|
112
|
+
data.deployments.push(fullDeployment);
|
|
113
|
+
writeDb(data);
|
|
176
114
|
return fullDeployment;
|
|
177
115
|
}
|
|
178
|
-
export function updateDeploymentStatus(id, status, fields = {}) {
|
|
179
|
-
const db = getDb();
|
|
180
|
-
const updates = ["status = ?"];
|
|
181
|
-
const params = [status];
|
|
182
|
-
for (const [key, val] of Object.entries(fields)) {
|
|
183
|
-
if (key !== "id" && key !== "status") {
|
|
184
|
-
updates.push(`${key} = ?`);
|
|
185
|
-
params.push(val);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
params.push(id);
|
|
189
|
-
const stmt = db.prepare(`UPDATE deployments SET ${updates.join(", ")} WHERE id = ?`);
|
|
190
|
-
stmt.run(...params);
|
|
191
|
-
}
|
|
192
116
|
export function getDeployment(id) {
|
|
193
|
-
const
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
-
return res || null;
|
|
117
|
+
const data = readDb();
|
|
118
|
+
const found = data.deployments.find(d => d.id === id);
|
|
119
|
+
return found || null;
|
|
197
120
|
}
|
|
198
121
|
export function getDeployments(projectId, limit) {
|
|
199
|
-
const
|
|
200
|
-
let
|
|
201
|
-
const params = [];
|
|
122
|
+
const data = readDb();
|
|
123
|
+
let list = [...data.deployments];
|
|
202
124
|
if (projectId) {
|
|
203
|
-
|
|
204
|
-
params.push(projectId);
|
|
125
|
+
list = list.filter(d => d.project_id === projectId);
|
|
205
126
|
}
|
|
206
|
-
|
|
207
|
-
if (limit) {
|
|
208
|
-
|
|
209
|
-
params.push(limit);
|
|
127
|
+
list.sort((a, b) => b.created_at - a.created_at);
|
|
128
|
+
if (limit !== undefined) {
|
|
129
|
+
list = list.slice(0, limit);
|
|
210
130
|
}
|
|
211
|
-
|
|
212
|
-
return stmt.all(...params);
|
|
131
|
+
return list;
|
|
213
132
|
}
|
|
214
133
|
export function getQueuedDeployments(projectId) {
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
|
|
134
|
+
const data = readDb();
|
|
135
|
+
return data.deployments
|
|
136
|
+
.filter(d => d.project_id === projectId && d.status === "QUEUED")
|
|
137
|
+
.sort((a, b) => a.created_at - b.created_at);
|
|
218
138
|
}
|
|
219
139
|
export function getRunningDeployment(projectId) {
|
|
220
|
-
const
|
|
221
|
-
const
|
|
222
|
-
|
|
223
|
-
|
|
140
|
+
const data = readDb();
|
|
141
|
+
const found = data.deployments.find(d => d.project_id === projectId && d.status === "RUNNING");
|
|
142
|
+
return found || null;
|
|
143
|
+
}
|
|
144
|
+
export function updateDeploymentStatus(id, status, extraFields) {
|
|
145
|
+
const data = readDb();
|
|
146
|
+
const idx = data.deployments.findIndex(d => d.id === id);
|
|
147
|
+
if (idx !== -1) {
|
|
148
|
+
data.deployments[idx] = {
|
|
149
|
+
...data.deployments[idx],
|
|
150
|
+
status,
|
|
151
|
+
...extraFields,
|
|
152
|
+
};
|
|
153
|
+
writeDb(data);
|
|
154
|
+
}
|
|
224
155
|
}
|
|
225
|
-
// Steps Repositories
|
|
156
|
+
// Deployment Steps Repositories
|
|
226
157
|
export function createDeploymentStep(step) {
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
updates.push(`${key} = ?`);
|
|
241
|
-
params.push(val);
|
|
242
|
-
}
|
|
158
|
+
const data = readDb();
|
|
159
|
+
data.deployment_steps.push(step);
|
|
160
|
+
writeDb(data);
|
|
161
|
+
}
|
|
162
|
+
export function updateDeploymentStep(id, updates) {
|
|
163
|
+
const data = readDb();
|
|
164
|
+
const idx = data.deployment_steps.findIndex(ds => ds.id === id);
|
|
165
|
+
if (idx !== -1) {
|
|
166
|
+
data.deployment_steps[idx] = {
|
|
167
|
+
...data.deployment_steps[idx],
|
|
168
|
+
...updates,
|
|
169
|
+
};
|
|
170
|
+
writeDb(data);
|
|
243
171
|
}
|
|
244
|
-
params.push(id);
|
|
245
|
-
const stmt = db.prepare(`UPDATE deployment_steps SET ${updates.join(", ")} WHERE id = ?`);
|
|
246
|
-
stmt.run(...params);
|
|
247
172
|
}
|
|
248
173
|
export function getDeploymentSteps(deploymentId) {
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
return stmt.all(deploymentId);
|
|
174
|
+
const data = readDb();
|
|
175
|
+
return data.deployment_steps.filter(ds => ds.deployment_id === deploymentId);
|
|
252
176
|
}
|
|
253
|
-
//
|
|
254
|
-
export function appendDeploymentLog(deploymentId,
|
|
255
|
-
const
|
|
256
|
-
const
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
WHERE deployment_id = ?
|
|
260
|
-
`);
|
|
261
|
-
stmt.run(text, deploymentId);
|
|
177
|
+
// Deployment Logs Repositories
|
|
178
|
+
export function appendDeploymentLog(deploymentId, logText) {
|
|
179
|
+
const data = readDb();
|
|
180
|
+
const existing = data.deployment_logs[deploymentId] || "";
|
|
181
|
+
data.deployment_logs[deploymentId] = existing + logText;
|
|
182
|
+
writeDb(data);
|
|
262
183
|
}
|
|
263
184
|
export function getDeploymentLog(deploymentId) {
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
const res = stmt.get(deploymentId);
|
|
267
|
-
return res ? res.log_data : null;
|
|
185
|
+
const data = readDb();
|
|
186
|
+
return data.deployment_logs[deploymentId] !== undefined ? data.deployment_logs[deploymentId] : null;
|
|
268
187
|
}
|
|
188
|
+
// Stats & Metrics
|
|
269
189
|
export function getStats(projectId) {
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
190
|
+
const data = readDb();
|
|
191
|
+
let deploys = [...data.deployments];
|
|
192
|
+
if (projectId) {
|
|
193
|
+
deploys = deploys.filter(d => d.project_id === projectId);
|
|
194
|
+
}
|
|
195
|
+
const total = deploys.length;
|
|
275
196
|
if (total === 0) {
|
|
276
197
|
return {
|
|
277
198
|
totalDeployments: 0,
|
|
@@ -282,44 +203,48 @@ export function getStats(projectId) {
|
|
|
282
203
|
fastestDeployMs: 0,
|
|
283
204
|
};
|
|
284
205
|
}
|
|
285
|
-
const
|
|
286
|
-
const
|
|
287
|
-
const
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
const
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
206
|
+
const successDeploys = deploys.filter(d => d.status === "SUCCESS");
|
|
207
|
+
const successCount = successDeploys.length;
|
|
208
|
+
const successRate = total > 0 ? (successCount / total) * 100 : 0;
|
|
209
|
+
const successDurations = successDeploys
|
|
210
|
+
.map(d => d.total_duration_ms)
|
|
211
|
+
.filter((d) => d !== null && d !== undefined);
|
|
212
|
+
const avgDeployTimeMs = successDurations.length > 0
|
|
213
|
+
? Math.round(successDurations.reduce((sum, val) => sum + val, 0) / successDurations.length)
|
|
214
|
+
: 0;
|
|
215
|
+
const slowestDeployMs = successDurations.length > 0 ? Math.max(...successDurations) : 0;
|
|
216
|
+
const fastestDeployMs = successDurations.length > 0 ? Math.min(...successDurations) : 0;
|
|
217
|
+
const depIds = deploys.map(d => d.id);
|
|
218
|
+
const buildSteps = data.deployment_steps.filter(ds => depIds.includes(ds.deployment_id) &&
|
|
219
|
+
ds.step_name === "build" &&
|
|
220
|
+
ds.status === "SUCCESS");
|
|
221
|
+
const buildDurations = buildSteps
|
|
222
|
+
.map(ds => ds.duration_ms)
|
|
223
|
+
.filter((d) => d !== null && d !== undefined);
|
|
224
|
+
const avgBuildTimeMs = buildDurations.length > 0
|
|
225
|
+
? Math.round(buildDurations.reduce((sum, val) => sum + val, 0) / buildDurations.length)
|
|
226
|
+
: 0;
|
|
301
227
|
return {
|
|
302
228
|
totalDeployments: total,
|
|
303
229
|
successRate: parseFloat(successRate.toFixed(1)),
|
|
304
|
-
avgDeployTimeMs
|
|
305
|
-
avgBuildTimeMs
|
|
306
|
-
slowestDeployMs
|
|
307
|
-
fastestDeployMs
|
|
230
|
+
avgDeployTimeMs,
|
|
231
|
+
avgBuildTimeMs,
|
|
232
|
+
slowestDeployMs,
|
|
233
|
+
fastestDeployMs,
|
|
308
234
|
};
|
|
309
235
|
}
|
|
236
|
+
// Webhook Delivery Processed Protection
|
|
310
237
|
export function isWebhookDeliveryProcessed(id) {
|
|
311
|
-
const
|
|
312
|
-
|
|
313
|
-
const res = stmt.get(id);
|
|
314
|
-
return res.count > 0;
|
|
238
|
+
const data = readDb();
|
|
239
|
+
return data.webhook_deliveries.some(d => d.id === id);
|
|
315
240
|
}
|
|
316
241
|
export function recordWebhookDelivery(id) {
|
|
317
|
-
const
|
|
242
|
+
const data = readDb();
|
|
318
243
|
const now = Date.now();
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
244
|
+
if (!data.webhook_deliveries.some(d => d.id === id)) {
|
|
245
|
+
data.webhook_deliveries.push({ id, created_at: now });
|
|
246
|
+
}
|
|
247
|
+
data.webhook_deliveries = data.webhook_deliveries.filter(d => d.created_at >= now - 86400000);
|
|
248
|
+
writeDb(data);
|
|
324
249
|
}
|
|
325
250
|
//# sourceMappingURL=db.js.map
|
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/paths.js
CHANGED
|
@@ -3,7 +3,7 @@ import os from "os";
|
|
|
3
3
|
import fs from "fs";
|
|
4
4
|
export const DEPLOYKIT_DIR = process.env.DEPLOYKIT_DIR || path.join(os.homedir(), ".deploykit");
|
|
5
5
|
export const CONFIG_PATH = path.join(DEPLOYKIT_DIR, "config.json");
|
|
6
|
-
export const DB_PATH = path.join(DEPLOYKIT_DIR, "deploykit.
|
|
6
|
+
export const DB_PATH = path.join(DEPLOYKIT_DIR, "deploykit.json");
|
|
7
7
|
export const BUILDS_DIR = path.join(DEPLOYKIT_DIR, "builds");
|
|
8
8
|
export function ensureDirsExist() {
|
|
9
9
|
if (!fs.existsSync(DEPLOYKIT_DIR)) {
|
package/dist/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AAChG,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AAChG,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAE7D,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,eAAe,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAA0D;IACxF,eAAe,EAAE,CAAC;IAClB,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gitship-core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -13,14 +13,12 @@
|
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"gitship-shared": "*",
|
|
16
|
-
"better-sqlite3": "^11.0.0",
|
|
17
16
|
"execa": "^9.2.0",
|
|
18
17
|
"nanoid": "^5.0.7",
|
|
19
18
|
"octokit": "^3.2.1",
|
|
20
19
|
"zod": "^3.23.8"
|
|
21
20
|
},
|
|
22
21
|
"devDependencies": {
|
|
23
|
-
"@types/better-sqlite3": "^7.6.10",
|
|
24
22
|
"@types/node": "^22.0.0",
|
|
25
23
|
"typescript": "^5.4.5"
|
|
26
24
|
}
|