@serve.zone/gitops 3.0.0 → 3.1.1
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/changelog.md +24 -0
- package/deno.json +1 -1
- package/dist_serve/bundle.js +726 -694
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes/connectionmanager.d.ts +5 -1
- package/dist_ts/classes/connectionmanager.js +62 -7
- package/dist_ts/classes/syncmanager.d.ts +40 -0
- package/dist_ts/classes/syncmanager.js +804 -111
- package/dist_ts/classes/syncpath.d.ts +13 -0
- package/dist_ts/classes/syncpath.js +53 -0
- package/dist_ts/opsserver/handlers/connections.handler.js +8 -2
- package/dist_ts/opsserver/handlers/sync.handler.js +5 -1
- package/dist_ts/providers/classes.baseprovider.d.ts +22 -0
- package/dist_ts/providers/classes.baseprovider.js +93 -1
- package/dist_ts/providers/classes.giteaprovider.d.ts +18 -1
- package/dist_ts/providers/classes.giteaprovider.js +236 -1
- package/dist_ts/providers/classes.gitlabprovider.d.ts +16 -1
- package/dist_ts/providers/classes.gitlabprovider.js +235 -1
- package/dist_ts_interfaces/data/artifact.d.ts +39 -0
- package/dist_ts_interfaces/data/artifact.js +2 -0
- package/dist_ts_interfaces/data/connection.d.ts +3 -0
- package/dist_ts_interfaces/data/index.d.ts +1 -0
- package/dist_ts_interfaces/data/index.js +2 -1
- package/dist_ts_interfaces/data/sync.d.ts +21 -0
- package/dist_ts_interfaces/requests/connections.d.ts +6 -0
- package/dist_ts_interfaces/requests/sync.d.ts +4 -0
- package/package.json +4 -4
- package/readme.md +8 -4
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes/connectionmanager.ts +61 -6
- package/ts/classes/syncmanager.ts +1095 -119
- package/ts/classes/syncpath.ts +71 -0
- package/ts/opsserver/handlers/connections.handler.ts +9 -0
- package/ts/opsserver/handlers/sync.handler.ts +4 -0
- package/ts/providers/classes.baseprovider.ts +137 -0
- package/ts/providers/classes.giteaprovider.ts +293 -1
- package/ts/providers/classes.gitlabprovider.ts +292 -1
- package/ts_interfaces/data/artifact.ts +43 -0
- package/ts_interfaces/data/connection.ts +3 -0
- package/ts_interfaces/data/index.ts +1 -0
- package/ts_interfaces/data/sync.ts +22 -0
- package/ts_interfaces/requests/connections.ts +6 -0
- package/ts_interfaces/requests/sync.ts +4 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/appstate.ts +10 -0
- package/ts_web/elements/views/connections/index.ts +26 -0
- package/ts_web/elements/views/sync/index.ts +26 -4
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
2
|
import { logger } from '../logging.js';
|
|
3
3
|
import { intervalMinutesToMs, unrefTimer, validateIntervalMinutes } from '../timers.js';
|
|
4
|
+
import * as syncpath from './syncpath.js';
|
|
4
5
|
const SYNC_PREFIX = '/sync/';
|
|
5
6
|
const SYNC_STATUS_PREFIX = '/sync-status/';
|
|
7
|
+
const SYNC_MAPPING_PREFIX = '/sync-mappings/';
|
|
8
|
+
const REPO_SYNC_CONCURRENCY = 10;
|
|
9
|
+
const ARTIFACT_REPO_SYNC_CONCURRENCY = 2;
|
|
10
|
+
const IMAGE_COPY_CONCURRENCY = 2;
|
|
11
|
+
const SKOPEO_VERSION_TIMEOUT_MS = 10_000;
|
|
12
|
+
const SKOPEO_COPY_TIMEOUT_MS = 30 * 60 * 1000;
|
|
13
|
+
const RELEASE_ASSET_TRANSFER_TIMEOUT_MS = 10 * 60 * 1000;
|
|
14
|
+
const RELEASE_ASSET_MAX_BYTES = 250 * 1024 * 1024;
|
|
15
|
+
const RAW_API_TIMEOUT_MS = 2 * 60 * 1000;
|
|
16
|
+
const MAX_COMMAND_OUTPUT_BYTES = 1024 * 1024;
|
|
6
17
|
/**
|
|
7
18
|
* Manages sync configurations and executes periodic git mirror operations.
|
|
8
19
|
* Each sync config defines a source → target connection mapping.
|
|
@@ -20,6 +31,10 @@ export class SyncManager {
|
|
|
20
31
|
avatarUploadCache = new Map();
|
|
21
32
|
activeGitChildren = new Set();
|
|
22
33
|
stopping = false;
|
|
34
|
+
skopeoAvailable = null;
|
|
35
|
+
abortController = new AbortController();
|
|
36
|
+
activeImageCopies = 0;
|
|
37
|
+
imageCopyWaiters = [];
|
|
23
38
|
mirrorsPath = '';
|
|
24
39
|
constructor(storageManager, connectionManager, actionLog) {
|
|
25
40
|
this.storageManager = storageManager;
|
|
@@ -28,6 +43,7 @@ export class SyncManager {
|
|
|
28
43
|
}
|
|
29
44
|
async init() {
|
|
30
45
|
this.stopping = false;
|
|
46
|
+
this.abortController = new AbortController();
|
|
31
47
|
// Create temp directory for mirrors (RAM-backed on most Linux systems via tmpfs)
|
|
32
48
|
this.mirrorsPath = await plugins.fs.mkdtemp(plugins.path.join(plugins.os.tmpdir(), 'gitops-mirrors-'));
|
|
33
49
|
await this.loadConfigs();
|
|
@@ -42,6 +58,12 @@ export class SyncManager {
|
|
|
42
58
|
}
|
|
43
59
|
async stop() {
|
|
44
60
|
this.stopping = true;
|
|
61
|
+
if (!this.abortController.signal.aborted) {
|
|
62
|
+
this.abortController.abort(new Error('SyncManager is stopping'));
|
|
63
|
+
}
|
|
64
|
+
for (const wake of this.imageCopyWaiters.splice(0)) {
|
|
65
|
+
wake();
|
|
66
|
+
}
|
|
45
67
|
for (const [_id, timer] of this.timers) {
|
|
46
68
|
clearInterval(timer);
|
|
47
69
|
}
|
|
@@ -94,8 +116,12 @@ export class SyncManager {
|
|
|
94
116
|
status: 'paused',
|
|
95
117
|
lastSyncAt: 0,
|
|
96
118
|
reposSynced: 0,
|
|
119
|
+
releasesSynced: 0,
|
|
120
|
+
imagesSynced: 0,
|
|
97
121
|
enforceDelete: data.enforceDelete ?? false,
|
|
98
122
|
enforceGroupDelete: data.enforceGroupDelete ?? false,
|
|
123
|
+
syncReleases: data.syncReleases ?? false,
|
|
124
|
+
syncContainerImages: data.syncContainerImages ?? false,
|
|
99
125
|
addMirrorHint: data.addMirrorHint ?? false,
|
|
100
126
|
useGroupAvatarsForProjects: data.useGroupAvatarsForProjects ?? false,
|
|
101
127
|
createdAt: Date.now(),
|
|
@@ -119,12 +145,16 @@ export class SyncManager {
|
|
|
119
145
|
config.enforceDelete = updates.enforceDelete;
|
|
120
146
|
if (updates.enforceGroupDelete !== undefined)
|
|
121
147
|
config.enforceGroupDelete = updates.enforceGroupDelete;
|
|
148
|
+
if (updates.syncReleases !== undefined)
|
|
149
|
+
config.syncReleases = updates.syncReleases;
|
|
150
|
+
if (updates.syncContainerImages !== undefined)
|
|
151
|
+
config.syncContainerImages = updates.syncContainerImages;
|
|
122
152
|
if (updates.addMirrorHint !== undefined)
|
|
123
153
|
config.addMirrorHint = updates.addMirrorHint;
|
|
124
154
|
if (updates.useGroupAvatarsForProjects !== undefined)
|
|
125
155
|
config.useGroupAvatarsForProjects = updates.useGroupAvatarsForProjects;
|
|
126
156
|
if (updates.targetGroupOffset !== undefined)
|
|
127
|
-
config.targetGroupOffset = updates.targetGroupOffset;
|
|
157
|
+
config.targetGroupOffset = updates.targetGroupOffset || undefined;
|
|
128
158
|
this.validateSyncConfig(config);
|
|
129
159
|
await this.persistConfig(config);
|
|
130
160
|
// Restart timer with new interval
|
|
@@ -145,6 +175,10 @@ export class SyncManager {
|
|
|
145
175
|
for (const key of statusKeys) {
|
|
146
176
|
await this.storageManager.delete(key);
|
|
147
177
|
}
|
|
178
|
+
const mappingKeys = await this.storageManager.list(`${SYNC_MAPPING_PREFIX}${id}/`);
|
|
179
|
+
for (const key of mappingKeys) {
|
|
180
|
+
await this.storageManager.delete(key);
|
|
181
|
+
}
|
|
148
182
|
// Clean up mirror directory
|
|
149
183
|
const mirrorDir = plugins.path.join(this.mirrorsPath, id);
|
|
150
184
|
try {
|
|
@@ -198,7 +232,7 @@ export class SyncManager {
|
|
|
198
232
|
const targetProvider = this.connectionManager.getProvider(config.targetConnectionId);
|
|
199
233
|
logger.syncLog('info', `Fetching source projects from "${sourceConn.name}"...`, 'preview');
|
|
200
234
|
const allProjects = await sourceProvider.getProjects();
|
|
201
|
-
const projects = allProjects.filter(p => !this.isObsoletePath(p.fullPath));
|
|
235
|
+
const projects = allProjects.filter((p) => !this.isObsoletePath(p.fullPath));
|
|
202
236
|
logger.syncLog('info', `Found ${projects.length} source projects (${allProjects.length - projects.length} obsolete excluded)`, 'preview');
|
|
203
237
|
const mappings = projects.map((project) => {
|
|
204
238
|
const targetFullPath = this.computeTargetFullPath(project.fullPath, sourceConn.groupFilter, config.targetGroupOffset);
|
|
@@ -208,13 +242,13 @@ export class SyncManager {
|
|
|
208
242
|
let deletions = [];
|
|
209
243
|
if (config.enforceDelete) {
|
|
210
244
|
logger.syncLog('info', 'Computing repo deletions (enforce-delete enabled)...', 'preview');
|
|
211
|
-
const expectedTargetPaths = new Set(mappings.map((m) => m.targetFullPath.toLowerCase()));
|
|
245
|
+
const expectedTargetPaths = new Set(mappings.map((m) => this.computeProviderProjectFullPath(targetConn, m.targetFullPath).toLowerCase()));
|
|
212
246
|
const scopePrefix = config.targetGroupOffset;
|
|
213
247
|
const targetProjects = await targetProvider.getProjects();
|
|
214
248
|
for (const tp of targetProjects) {
|
|
215
249
|
if (this.isObsoletePath(tp.fullPath))
|
|
216
250
|
continue;
|
|
217
|
-
if (
|
|
251
|
+
if (!this.isTargetProjectInScope(targetConn, tp.fullPath, scopePrefix)) {
|
|
218
252
|
continue;
|
|
219
253
|
}
|
|
220
254
|
if (!expectedTargetPaths.has(tp.fullPath.toLowerCase())) {
|
|
@@ -287,28 +321,65 @@ export class SyncManager {
|
|
|
287
321
|
const sourceProvider = this.connectionManager.getProvider(config.sourceConnectionId);
|
|
288
322
|
logger.syncLog('info', `Fetching source projects from "${sourceConn.name}"...`, 'api');
|
|
289
323
|
const allProjects = await sourceProvider.getProjects();
|
|
290
|
-
const projects = allProjects.filter(p => !this.isObsoletePath(p.fullPath));
|
|
324
|
+
const projects = allProjects.filter((p) => !this.isObsoletePath(p.fullPath));
|
|
291
325
|
logger.syncLog('info', `Found ${projects.length} source projects (${allProjects.length - projects.length} obsolete excluded)`, 'api');
|
|
292
326
|
let synced = 0;
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
327
|
+
let failed = 0;
|
|
328
|
+
let releasesSynced = 0;
|
|
329
|
+
let imagesSynced = 0;
|
|
330
|
+
const concurrency = config.syncReleases || config.syncContainerImages
|
|
331
|
+
? ARTIFACT_REPO_SYNC_CONCURRENCY
|
|
332
|
+
: REPO_SYNC_CONCURRENCY;
|
|
333
|
+
for (let i = 0; i < projects.length; i += concurrency) {
|
|
334
|
+
const batch = projects.slice(i, i + concurrency);
|
|
296
335
|
await Promise.all(batch.map(async (project) => {
|
|
336
|
+
const targetFullPath = this.computeTargetFullPath(project.fullPath, sourceConn.groupFilter, config.targetGroupOffset);
|
|
297
337
|
try {
|
|
298
338
|
logger.syncLog('info', `Syncing ${project.fullPath}...`, 'sync');
|
|
299
|
-
await this.syncRepo(config, project, sourceConn, targetConn);
|
|
339
|
+
const syncResult = await this.syncRepo(config, project, sourceConn, targetConn);
|
|
340
|
+
releasesSynced += syncResult.releasesSynced || 0;
|
|
341
|
+
imagesSynced += syncResult.imagesSynced || 0;
|
|
342
|
+
const artifactErrors = [syncResult.releaseSyncError, syncResult.imageSyncError].filter(Boolean);
|
|
343
|
+
if (artifactErrors.length > 0) {
|
|
344
|
+
failed++;
|
|
345
|
+
const errMsg = artifactErrors.join('; ');
|
|
346
|
+
await this.updateRepoStatus(config.id, project.fullPath, {
|
|
347
|
+
status: 'error',
|
|
348
|
+
targetFullPath: syncResult.targetFullPath,
|
|
349
|
+
sourceProjectId: project.id,
|
|
350
|
+
targetProjectId: syncResult.targetProjectId,
|
|
351
|
+
releasesSynced: syncResult.releasesSynced,
|
|
352
|
+
imagesSynced: syncResult.imagesSynced,
|
|
353
|
+
releaseSyncError: syncResult.releaseSyncError,
|
|
354
|
+
imageSyncError: syncResult.imageSyncError,
|
|
355
|
+
lastSyncAt: Date.now(),
|
|
356
|
+
lastSyncError: errMsg,
|
|
357
|
+
});
|
|
358
|
+
logger.syncLog('error', `Artifact sync failed for ${project.fullPath}: ${errMsg}`, 'sync');
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
300
361
|
synced++;
|
|
301
362
|
await this.updateRepoStatus(config.id, project.fullPath, {
|
|
302
363
|
status: 'synced',
|
|
364
|
+
targetFullPath: syncResult.targetFullPath,
|
|
365
|
+
sourceProjectId: project.id,
|
|
366
|
+
targetProjectId: syncResult.targetProjectId,
|
|
367
|
+
releasesSynced: syncResult.releasesSynced,
|
|
368
|
+
imagesSynced: syncResult.imagesSynced,
|
|
369
|
+
releaseSyncError: syncResult.releaseSyncError,
|
|
370
|
+
imageSyncError: syncResult.imageSyncError,
|
|
303
371
|
lastSyncAt: Date.now(),
|
|
304
372
|
lastSyncError: undefined,
|
|
305
373
|
});
|
|
306
374
|
logger.syncLog('success', `Synced ${project.fullPath}`, 'sync');
|
|
307
375
|
}
|
|
308
376
|
catch (err) {
|
|
377
|
+
failed++;
|
|
309
378
|
const errMsg = err instanceof Error ? err.message : String(err);
|
|
310
379
|
await this.updateRepoStatus(config.id, project.fullPath, {
|
|
311
380
|
status: 'error',
|
|
381
|
+
targetFullPath,
|
|
382
|
+
sourceProjectId: project.id,
|
|
312
383
|
lastSyncError: errMsg,
|
|
313
384
|
lastSyncAt: Date.now(),
|
|
314
385
|
});
|
|
@@ -328,12 +399,21 @@ export class SyncManager {
|
|
|
328
399
|
}
|
|
329
400
|
config.lastSyncAt = Date.now();
|
|
330
401
|
config.reposSynced = synced;
|
|
402
|
+
config.releasesSynced = releasesSynced;
|
|
403
|
+
config.imagesSynced = imagesSynced;
|
|
331
404
|
config.lastSyncDurationMs = Date.now() - startTime;
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
config.status = '
|
|
405
|
+
if (failed > 0) {
|
|
406
|
+
config.lastSyncError = `Sync completed with ${failed}/${projects.length} repo error(s)`;
|
|
407
|
+
config.status = 'error';
|
|
408
|
+
}
|
|
409
|
+
else {
|
|
410
|
+
config.lastSyncError = undefined;
|
|
411
|
+
if (config.status === 'error')
|
|
412
|
+
config.status = 'active';
|
|
413
|
+
}
|
|
335
414
|
await this.persistConfig(config);
|
|
336
|
-
|
|
415
|
+
const completionLevel = failed > 0 ? 'error' : 'success';
|
|
416
|
+
logger.syncLog(completionLevel, `Sync complete for "${config.name}": ${synced}/${projects.length} repos synced, ${failed} failed in ${config.lastSyncDurationMs}ms`, 'sync');
|
|
337
417
|
}
|
|
338
418
|
catch (err) {
|
|
339
419
|
const errMsg = err instanceof Error ? err.message : String(err);
|
|
@@ -353,21 +433,30 @@ export class SyncManager {
|
|
|
353
433
|
// ============================================================================
|
|
354
434
|
async syncRepo(config, project, sourceConn, targetConn) {
|
|
355
435
|
const targetFullPath = this.computeTargetFullPath(project.fullPath, sourceConn.groupFilter, config.targetGroupOffset);
|
|
436
|
+
const targetProviderFullPath = this.computeProviderProjectFullPath(targetConn, targetFullPath);
|
|
356
437
|
// Build authenticated git URLs
|
|
357
438
|
const sourceUrl = this.buildAuthUrl(sourceConn, project.fullPath);
|
|
358
|
-
const targetUrl = this.buildAuthUrl(targetConn,
|
|
439
|
+
const targetUrl = this.buildAuthUrl(targetConn, targetProviderFullPath);
|
|
359
440
|
// Mirror directory for this repo
|
|
360
441
|
const mirrorDir = plugins.path.join(this.mirrorsPath, config.id, this.sanitizePath(project.fullPath));
|
|
442
|
+
await this.reconcileProjectMapping(config, project, sourceConn, targetConn, targetFullPath);
|
|
361
443
|
// Ensure target group/project hierarchy exists
|
|
362
444
|
await this.ensureTargetExists(targetConn, targetFullPath, project, sourceConn, sourceConn.groupFilter, config.targetGroupOffset);
|
|
363
445
|
// API-based ref comparison (fast path — avoids git clone when refs already match)
|
|
364
446
|
const sourceProvider = this.connectionManager.getProvider(sourceConn.id);
|
|
365
447
|
const targetProvider = this.connectionManager.getProvider(targetConn.id);
|
|
366
|
-
const apiRefsMatch = await this.refsMatchViaApi(sourceProvider, targetProvider, project.fullPath,
|
|
448
|
+
const apiRefsMatch = await this.refsMatchViaApi(sourceProvider, targetProvider, project.fullPath, targetProviderFullPath);
|
|
367
449
|
if (apiRefsMatch === true) {
|
|
368
450
|
logger.syncLog('info', `Refs match via API for ${project.fullPath}, skipping git`, 'api');
|
|
369
|
-
await this.syncProjectMetadata(config, sourceConn, targetConn, project.fullPath,
|
|
370
|
-
|
|
451
|
+
await this.syncProjectMetadata(config, sourceConn, targetConn, project.fullPath, targetProviderFullPath);
|
|
452
|
+
const targetProject = await this.fetchProjectRaw(targetConn, targetProviderFullPath);
|
|
453
|
+
await this.persistProjectMapping(config, project, sourceConn, targetConn, targetFullPath, targetProject);
|
|
454
|
+
const artifactResult = await this.syncProjectArtifacts(config, sourceConn, targetConn, sourceProvider, targetProvider, project.fullPath, targetFullPath);
|
|
455
|
+
return {
|
|
456
|
+
targetFullPath,
|
|
457
|
+
targetProjectId: targetProject?.id ? String(targetProject.id) : undefined,
|
|
458
|
+
...artifactResult,
|
|
459
|
+
};
|
|
371
460
|
}
|
|
372
461
|
// Clone or fetch from source
|
|
373
462
|
try {
|
|
@@ -393,7 +482,14 @@ export class SyncManager {
|
|
|
393
482
|
const msg = err instanceof Error ? err.message : String(err);
|
|
394
483
|
if (msg.includes("couldn't find remote ref HEAD")) {
|
|
395
484
|
logger.syncLog('warn', `Skipping empty repo ${project.fullPath} (no HEAD ref)`, 'git');
|
|
396
|
-
|
|
485
|
+
const targetProject = await this.fetchProjectRaw(targetConn, targetProviderFullPath);
|
|
486
|
+
await this.persistProjectMapping(config, project, sourceConn, targetConn, targetFullPath, targetProject);
|
|
487
|
+
const artifactResult = await this.syncProjectArtifacts(config, sourceConn, targetConn, sourceProvider, targetProvider, project.fullPath, targetFullPath);
|
|
488
|
+
return {
|
|
489
|
+
targetFullPath,
|
|
490
|
+
targetProjectId: targetProject?.id ? String(targetProject.id) : undefined,
|
|
491
|
+
...artifactResult,
|
|
492
|
+
};
|
|
397
493
|
}
|
|
398
494
|
throw err;
|
|
399
495
|
}
|
|
@@ -409,7 +505,7 @@ export class SyncManager {
|
|
|
409
505
|
const isUnrelated = await this.checkUnrelatedHistory(mirrorDir);
|
|
410
506
|
if (isUnrelated) {
|
|
411
507
|
logger.syncLog('warn', `Target "${targetFullPath}" has unrelated history — moving to obsolete`, 'git');
|
|
412
|
-
await this.moveToObsolete(targetConn,
|
|
508
|
+
await this.moveToObsolete(targetConn, targetProviderFullPath, config.targetGroupOffset);
|
|
413
509
|
// Re-create fresh target
|
|
414
510
|
await this.ensureTargetExists(targetConn, targetFullPath, project, sourceConn, sourceConn.groupFilter, config.targetGroupOffset);
|
|
415
511
|
this.actionLog.append({
|
|
@@ -434,9 +530,9 @@ export class SyncManager {
|
|
|
434
530
|
'+refs/tags/*:refs/tags/*',
|
|
435
531
|
], mirrorDir);
|
|
436
532
|
// Phase 2: sync default_branch now that all branches exist on target
|
|
437
|
-
await this.syncDefaultBranchBeforePush(sourceConn, targetConn, project.fullPath,
|
|
533
|
+
await this.syncDefaultBranchBeforePush(sourceConn, targetConn, project.fullPath, targetProviderFullPath);
|
|
438
534
|
// Phase 2b: unprotect stale branches on target so --prune can delete them
|
|
439
|
-
await this.unprotectStaleBranches(targetConn,
|
|
535
|
+
await this.unprotectStaleBranches(targetConn, targetProviderFullPath, mirrorDir);
|
|
440
536
|
// Phase 3: push with --prune to remove stale branches (safe now that default_branch is correct)
|
|
441
537
|
await this.runGit([
|
|
442
538
|
'push', 'target',
|
|
@@ -446,7 +542,521 @@ export class SyncManager {
|
|
|
446
542
|
], mirrorDir);
|
|
447
543
|
}
|
|
448
544
|
// Sync project metadata (description, visibility, topics, default_branch, avatar)
|
|
449
|
-
await this.syncProjectMetadata(config, sourceConn, targetConn, project.fullPath,
|
|
545
|
+
await this.syncProjectMetadata(config, sourceConn, targetConn, project.fullPath, targetProviderFullPath);
|
|
546
|
+
const targetProject = await this.fetchProjectRaw(targetConn, targetProviderFullPath);
|
|
547
|
+
await this.persistProjectMapping(config, project, sourceConn, targetConn, targetFullPath, targetProject);
|
|
548
|
+
const artifactResult = await this.syncProjectArtifacts(config, sourceConn, targetConn, sourceProvider, targetProvider, project.fullPath, targetFullPath);
|
|
549
|
+
return {
|
|
550
|
+
targetFullPath,
|
|
551
|
+
targetProjectId: targetProject?.id ? String(targetProject.id) : undefined,
|
|
552
|
+
...artifactResult,
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
async syncProjectArtifacts(config, sourceConn, targetConn, sourceProvider, targetProvider, sourceFullPath, targetFullPath) {
|
|
556
|
+
const result = {};
|
|
557
|
+
if (config.syncReleases) {
|
|
558
|
+
try {
|
|
559
|
+
result.releasesSynced = await this.syncReleasesForProject(sourceProvider, targetProvider, sourceFullPath, this.computeProviderProjectFullPath(targetConn, targetFullPath));
|
|
560
|
+
}
|
|
561
|
+
catch (err) {
|
|
562
|
+
result.releasesSynced = 0;
|
|
563
|
+
result.releaseSyncError = err instanceof Error ? err.message : String(err);
|
|
564
|
+
logger.syncLog('error', `Release sync failed for ${sourceFullPath}: ${result.releaseSyncError}`, 'api');
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
if (config.syncContainerImages) {
|
|
568
|
+
try {
|
|
569
|
+
result.imagesSynced = await this.syncContainerImagesForProject(config, sourceConn, targetConn, sourceProvider, targetProvider, sourceFullPath, targetFullPath);
|
|
570
|
+
}
|
|
571
|
+
catch (err) {
|
|
572
|
+
result.imagesSynced = 0;
|
|
573
|
+
result.imageSyncError = err instanceof Error ? err.message : String(err);
|
|
574
|
+
logger.syncLog('error', `Container image sync failed for ${sourceFullPath}: ${result.imageSyncError}`, 'api');
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
return result;
|
|
578
|
+
}
|
|
579
|
+
async syncReleasesForProject(sourceProvider, targetProvider, sourceFullPath, targetFullPath) {
|
|
580
|
+
const [sourceReleases, targetReleases] = await Promise.all([
|
|
581
|
+
sourceProvider.getReleases(sourceFullPath),
|
|
582
|
+
targetProvider.getReleases(targetFullPath),
|
|
583
|
+
]);
|
|
584
|
+
const targetByTag = new Map(targetReleases.map((release) => [release.tagName, release]));
|
|
585
|
+
const sourceTags = new Set(sourceReleases.map((release) => release.tagName));
|
|
586
|
+
let synced = 0;
|
|
587
|
+
for (const sourceRelease of sourceReleases) {
|
|
588
|
+
logger.syncLog('info', `Syncing release ${sourceRelease.tagName} for ${targetFullPath}`, 'api');
|
|
589
|
+
const previousTargetRelease = targetByTag.get(sourceRelease.tagName);
|
|
590
|
+
const targetRelease = await targetProvider.upsertRelease(targetFullPath, sourceRelease);
|
|
591
|
+
const previousTargetAssets = previousTargetRelease?.assets || targetRelease.assets || [];
|
|
592
|
+
const previousAssetsByName = new Map();
|
|
593
|
+
for (const targetAsset of previousTargetAssets) {
|
|
594
|
+
if (!previousAssetsByName.has(targetAsset.name)) {
|
|
595
|
+
previousAssetsByName.set(targetAsset.name, targetAsset);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
const retainedAssetIds = new Set();
|
|
599
|
+
const syncedAssetIds = new Set();
|
|
600
|
+
const deletedAssetIds = new Set();
|
|
601
|
+
for (const sourceAsset of sourceRelease.assets) {
|
|
602
|
+
if (sourceAsset.kind === 'source')
|
|
603
|
+
continue;
|
|
604
|
+
const previousAsset = previousAssetsByName.get(sourceAsset.name);
|
|
605
|
+
if (previousAsset && this.canReuseTargetReleaseAsset(sourceRelease, sourceAsset, previousAsset)) {
|
|
606
|
+
if (previousAsset.id)
|
|
607
|
+
retainedAssetIds.add(previousAsset.id);
|
|
608
|
+
continue;
|
|
609
|
+
}
|
|
610
|
+
if (sourceAsset.size && sourceAsset.size > RELEASE_ASSET_MAX_BYTES) {
|
|
611
|
+
throw new Error(`Release asset ${sourceAsset.name} is ${sourceAsset.size} bytes, exceeding the ${RELEASE_ASSET_MAX_BYTES} byte limit`);
|
|
612
|
+
}
|
|
613
|
+
const syncAsset = async () => {
|
|
614
|
+
const transfer = this.createTransferAbortSignal(RELEASE_ASSET_TRANSFER_TIMEOUT_MS, `Release asset transfer ${sourceFullPath}@${sourceRelease.tagName}/${sourceAsset.name}`);
|
|
615
|
+
try {
|
|
616
|
+
const transferOptions = {
|
|
617
|
+
signal: transfer.signal,
|
|
618
|
+
maxBytes: RELEASE_ASSET_MAX_BYTES,
|
|
619
|
+
};
|
|
620
|
+
const payload = await sourceProvider.downloadReleaseAsset(sourceFullPath, sourceRelease, sourceAsset, transferOptions);
|
|
621
|
+
if (payload) {
|
|
622
|
+
return await targetProvider.uploadReleaseAsset(targetFullPath, targetRelease, sourceAsset, payload, transferOptions);
|
|
623
|
+
}
|
|
624
|
+
return await targetProvider.createReleaseAssetLink(targetFullPath, targetRelease, sourceAsset);
|
|
625
|
+
}
|
|
626
|
+
finally {
|
|
627
|
+
transfer.cleanup();
|
|
628
|
+
}
|
|
629
|
+
};
|
|
630
|
+
let syncedAsset;
|
|
631
|
+
try {
|
|
632
|
+
syncedAsset = await syncAsset();
|
|
633
|
+
}
|
|
634
|
+
catch (err) {
|
|
635
|
+
if (!previousAsset || !this.isReleaseAssetDuplicateError(err))
|
|
636
|
+
throw err;
|
|
637
|
+
await targetProvider.deleteReleaseAsset(targetFullPath, previousTargetRelease || targetRelease, previousAsset);
|
|
638
|
+
if (previousAsset.id)
|
|
639
|
+
deletedAssetIds.add(previousAsset.id);
|
|
640
|
+
syncedAsset = await syncAsset();
|
|
641
|
+
}
|
|
642
|
+
if (syncedAsset.id)
|
|
643
|
+
syncedAssetIds.add(syncedAsset.id);
|
|
644
|
+
}
|
|
645
|
+
for (const targetAsset of previousTargetAssets) {
|
|
646
|
+
if (targetAsset.id && deletedAssetIds.has(targetAsset.id)) {
|
|
647
|
+
continue;
|
|
648
|
+
}
|
|
649
|
+
if (targetAsset.id && (retainedAssetIds.has(targetAsset.id) || syncedAssetIds.has(targetAsset.id))) {
|
|
650
|
+
continue;
|
|
651
|
+
}
|
|
652
|
+
await targetProvider.deleteReleaseAsset(targetFullPath, previousTargetRelease || targetRelease, targetAsset);
|
|
653
|
+
}
|
|
654
|
+
synced++;
|
|
655
|
+
}
|
|
656
|
+
for (const targetRelease of targetReleases) {
|
|
657
|
+
if (!sourceTags.has(targetRelease.tagName)) {
|
|
658
|
+
logger.syncLog('warn', `Deleting stale release ${targetRelease.tagName} from ${targetFullPath}`, 'api');
|
|
659
|
+
await targetProvider.deleteRelease(targetFullPath, targetRelease.tagName);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
return synced;
|
|
663
|
+
}
|
|
664
|
+
canReuseTargetReleaseAsset(_release, sourceAsset, targetAsset) {
|
|
665
|
+
if (sourceAsset.name !== targetAsset.name)
|
|
666
|
+
return false;
|
|
667
|
+
if (sourceAsset.url && targetAsset.url && sourceAsset.url === targetAsset.url)
|
|
668
|
+
return true;
|
|
669
|
+
if (sourceAsset.size !== undefined && targetAsset.size !== undefined) {
|
|
670
|
+
return sourceAsset.size === targetAsset.size;
|
|
671
|
+
}
|
|
672
|
+
return false;
|
|
673
|
+
}
|
|
674
|
+
isReleaseAssetDuplicateError(err) {
|
|
675
|
+
const errMsg = (err instanceof Error ? err.message : String(err)).toLowerCase();
|
|
676
|
+
return errMsg.includes('already')
|
|
677
|
+
|| errMsg.includes('exists')
|
|
678
|
+
|| errMsg.includes('duplicate')
|
|
679
|
+
|| errMsg.includes('409');
|
|
680
|
+
}
|
|
681
|
+
async syncContainerImagesForProject(config, sourceConn, targetConn, sourceProvider, targetProvider, sourceFullPath, targetFullPath) {
|
|
682
|
+
await this.assertSkopeoAvailable();
|
|
683
|
+
const sourceRepositories = await sourceProvider.getContainerImageRepositories(sourceFullPath);
|
|
684
|
+
const targetProviderFullPath = this.computeProviderProjectFullPath(targetConn, targetFullPath);
|
|
685
|
+
const expectedTargetTags = new Set();
|
|
686
|
+
let copiedTags = 0;
|
|
687
|
+
for (const sourceRepository of sourceRepositories) {
|
|
688
|
+
const targetImagePath = this.computeProviderContainerImagePath(targetConn, targetFullPath, syncpath.computeTargetContainerImagePath({
|
|
689
|
+
sourceFullPath,
|
|
690
|
+
sourceGroupFilter: sourceConn.groupFilter,
|
|
691
|
+
targetGroupOffset: config.targetGroupOffset,
|
|
692
|
+
sourceImagePath: sourceRepository.path,
|
|
693
|
+
}));
|
|
694
|
+
const targetLocation = this.buildRegistryImageLocation(targetConn, targetImagePath);
|
|
695
|
+
for (const tag of sourceRepository.tags) {
|
|
696
|
+
expectedTargetTags.add(this.getContainerTagKey(targetImagePath, tag.name));
|
|
697
|
+
await this.copyContainerImageTag(sourceConn, targetConn, `${sourceRepository.location}:${tag.name}`, `${targetLocation}:${tag.name}`);
|
|
698
|
+
copiedTags++;
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
const targetRepositories = await targetProvider.getContainerImageRepositories(targetProviderFullPath);
|
|
702
|
+
for (const targetRepository of targetRepositories) {
|
|
703
|
+
for (const tag of targetRepository.tags) {
|
|
704
|
+
const tagKey = this.getContainerTagKey(targetRepository.path, tag.name);
|
|
705
|
+
if (!expectedTargetTags.has(tagKey)) {
|
|
706
|
+
logger.syncLog('warn', `Deleting stale image tag ${targetRepository.path}:${tag.name}`, 'api');
|
|
707
|
+
await targetProvider.deleteContainerImageTag(targetProviderFullPath, targetRepository.id, tag.name);
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
return copiedTags;
|
|
712
|
+
}
|
|
713
|
+
computeProviderProjectFullPath(conn, fullPath) {
|
|
714
|
+
const normalizedPath = syncpath.normalizeSyncPath(fullPath);
|
|
715
|
+
if (conn.providerType !== 'gitea')
|
|
716
|
+
return normalizedPath;
|
|
717
|
+
const [orgName, ...repoSegments] = normalizedPath.split('/');
|
|
718
|
+
if (!orgName)
|
|
719
|
+
return normalizedPath;
|
|
720
|
+
if (repoSegments.length === 0)
|
|
721
|
+
return `${conn.groupFilter || 'default'}/${orgName}`;
|
|
722
|
+
return `${orgName}/${repoSegments.join('-')}`;
|
|
723
|
+
}
|
|
724
|
+
isTargetProjectInScope(conn, providerFullPath, logicalScopePrefix) {
|
|
725
|
+
if (!logicalScopePrefix)
|
|
726
|
+
return true;
|
|
727
|
+
const normalizedProviderPath = syncpath.normalizeSyncPath(providerFullPath).toLowerCase();
|
|
728
|
+
const normalizedScope = syncpath.normalizeSyncPath(logicalScopePrefix).toLowerCase();
|
|
729
|
+
if (conn.providerType !== 'gitea') {
|
|
730
|
+
return normalizedProviderPath === normalizedScope
|
|
731
|
+
|| normalizedProviderPath.startsWith(`${normalizedScope}/`);
|
|
732
|
+
}
|
|
733
|
+
const [scopeOwner, ...scopeRepoSegments] = normalizedScope.split('/');
|
|
734
|
+
if (!scopeOwner)
|
|
735
|
+
return true;
|
|
736
|
+
if (scopeRepoSegments.length === 0) {
|
|
737
|
+
return normalizedProviderPath === scopeOwner
|
|
738
|
+
|| normalizedProviderPath.startsWith(`${scopeOwner}/`);
|
|
739
|
+
}
|
|
740
|
+
const repoPrefix = scopeRepoSegments.join('-');
|
|
741
|
+
return normalizedProviderPath === `${scopeOwner}/${repoPrefix}`
|
|
742
|
+
|| normalizedProviderPath.startsWith(`${scopeOwner}/${repoPrefix}-`)
|
|
743
|
+
|| normalizedProviderPath.startsWith(`${scopeOwner}/${repoPrefix}/`);
|
|
744
|
+
}
|
|
745
|
+
computeProviderContainerImagePath(conn, targetFullPath, targetImagePath) {
|
|
746
|
+
if (conn.providerType !== 'gitea')
|
|
747
|
+
return syncpath.normalizeSyncPath(targetImagePath);
|
|
748
|
+
const normalizedTargetFullPath = syncpath.normalizeSyncPath(targetFullPath);
|
|
749
|
+
const normalizedImagePath = syncpath.normalizeSyncPath(targetImagePath);
|
|
750
|
+
const providerProjectPath = this.computeProviderProjectFullPath(conn, normalizedTargetFullPath);
|
|
751
|
+
if (normalizedImagePath === normalizedTargetFullPath)
|
|
752
|
+
return providerProjectPath;
|
|
753
|
+
if (normalizedImagePath.startsWith(`${normalizedTargetFullPath}/`)) {
|
|
754
|
+
return `${providerProjectPath}/${normalizedImagePath.substring(normalizedTargetFullPath.length + 1)}`;
|
|
755
|
+
}
|
|
756
|
+
return this.computeProviderProjectFullPath(conn, normalizedImagePath);
|
|
757
|
+
}
|
|
758
|
+
getContainerTagKey(imagePath, tagName) {
|
|
759
|
+
return `${syncpath.normalizeSyncPath(imagePath).toLowerCase()}:${tagName}`;
|
|
760
|
+
}
|
|
761
|
+
buildRegistryImageLocation(conn, imagePath) {
|
|
762
|
+
return `${this.getRegistryHost(conn)}/${syncpath.normalizeSyncPath(imagePath)}`;
|
|
763
|
+
}
|
|
764
|
+
getRegistryHost(conn) {
|
|
765
|
+
return (conn.registryUrl || new URL(conn.baseUrl).host)
|
|
766
|
+
.replace(/^https?:\/\//, '')
|
|
767
|
+
.replace(/\/+$/, '');
|
|
768
|
+
}
|
|
769
|
+
getRegistryAuth(conn) {
|
|
770
|
+
const token = conn.registryToken || conn.token;
|
|
771
|
+
const username = conn.registryUsername || (conn.providerType === 'gitlab' ? 'oauth2' : undefined);
|
|
772
|
+
if (!username || !token || token === '***')
|
|
773
|
+
return undefined;
|
|
774
|
+
return {
|
|
775
|
+
registry: this.getRegistryHost(conn),
|
|
776
|
+
username,
|
|
777
|
+
password: token,
|
|
778
|
+
};
|
|
779
|
+
}
|
|
780
|
+
async createRegistryAuthFile(conn) {
|
|
781
|
+
const auth = this.getRegistryAuth(conn);
|
|
782
|
+
if (!auth)
|
|
783
|
+
return undefined;
|
|
784
|
+
const authDir = await plugins.fs.mkdtemp(plugins.path.join(plugins.os.tmpdir(), 'gitops-skopeo-auth-'));
|
|
785
|
+
const authFile = plugins.path.join(authDir, 'auth.json');
|
|
786
|
+
const authString = plugins.Buffer.from(`${auth.username}:${auth.password}`, 'utf8').toString('base64');
|
|
787
|
+
try {
|
|
788
|
+
await plugins.fs.writeFile(authFile, JSON.stringify({ auths: { [auth.registry]: { auth: authString } } }), { mode: 0o600 });
|
|
789
|
+
return authFile;
|
|
790
|
+
}
|
|
791
|
+
catch (err) {
|
|
792
|
+
await plugins.fs.rm(authDir, { recursive: true, force: true });
|
|
793
|
+
throw err;
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
async removeRegistryAuthFile(authFile) {
|
|
797
|
+
if (!authFile)
|
|
798
|
+
return;
|
|
799
|
+
await plugins.fs.rm(plugins.path.dirname(authFile), { recursive: true, force: true });
|
|
800
|
+
}
|
|
801
|
+
async assertSkopeoAvailable() {
|
|
802
|
+
if (this.skopeoAvailable === true)
|
|
803
|
+
return;
|
|
804
|
+
if (this.skopeoAvailable === false) {
|
|
805
|
+
throw new Error('Container image sync requires skopeo, but the skopeo command is not available');
|
|
806
|
+
}
|
|
807
|
+
try {
|
|
808
|
+
await this.runCommand('skopeo', ['--version'], undefined, { timeoutMs: SKOPEO_VERSION_TIMEOUT_MS });
|
|
809
|
+
this.skopeoAvailable = true;
|
|
810
|
+
}
|
|
811
|
+
catch {
|
|
812
|
+
this.skopeoAvailable = false;
|
|
813
|
+
throw new Error('Container image sync requires skopeo, but the skopeo command is not available');
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
async copyContainerImageTag(sourceConn, targetConn, sourceReference, targetReference) {
|
|
817
|
+
logger.syncLog('info', `Copying image ${sourceReference} -> ${targetReference}`, 'api');
|
|
818
|
+
let sourceAuthFile;
|
|
819
|
+
let targetAuthFile;
|
|
820
|
+
try {
|
|
821
|
+
sourceAuthFile = await this.createRegistryAuthFile(sourceConn);
|
|
822
|
+
targetAuthFile = await this.createRegistryAuthFile(targetConn);
|
|
823
|
+
const args = ['copy', '--all', '--image-parallel-copies', '3'];
|
|
824
|
+
if (sourceAuthFile)
|
|
825
|
+
args.push('--src-authfile', sourceAuthFile);
|
|
826
|
+
if (targetAuthFile)
|
|
827
|
+
args.push('--dest-authfile', targetAuthFile);
|
|
828
|
+
args.push(`docker://${sourceReference}`, `docker://${targetReference}`);
|
|
829
|
+
await this.withImageCopySlot(() => this.runCommand('skopeo', args, undefined, {
|
|
830
|
+
timeoutMs: SKOPEO_COPY_TIMEOUT_MS,
|
|
831
|
+
}));
|
|
832
|
+
}
|
|
833
|
+
finally {
|
|
834
|
+
await Promise.all([
|
|
835
|
+
this.removeRegistryAuthFile(sourceAuthFile),
|
|
836
|
+
this.removeRegistryAuthFile(targetAuthFile),
|
|
837
|
+
]);
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
async withImageCopySlot(fn) {
|
|
841
|
+
while (this.activeImageCopies >= IMAGE_COPY_CONCURRENCY) {
|
|
842
|
+
if (this.stopping) {
|
|
843
|
+
throw new Error('SyncManager is stopping');
|
|
844
|
+
}
|
|
845
|
+
await new Promise((resolve) => this.imageCopyWaiters.push(resolve));
|
|
846
|
+
}
|
|
847
|
+
if (this.stopping) {
|
|
848
|
+
throw new Error('SyncManager is stopping');
|
|
849
|
+
}
|
|
850
|
+
this.activeImageCopies++;
|
|
851
|
+
try {
|
|
852
|
+
return await fn();
|
|
853
|
+
}
|
|
854
|
+
finally {
|
|
855
|
+
this.activeImageCopies--;
|
|
856
|
+
const wake = this.imageCopyWaiters.shift();
|
|
857
|
+
if (wake)
|
|
858
|
+
wake();
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
createTransferAbortSignal(timeoutMs, label) {
|
|
862
|
+
const controller = new AbortController();
|
|
863
|
+
const abortFromStop = () => {
|
|
864
|
+
if (!controller.signal.aborted) {
|
|
865
|
+
controller.abort(new Error('SyncManager is stopping'));
|
|
866
|
+
}
|
|
867
|
+
};
|
|
868
|
+
if (this.abortController.signal.aborted) {
|
|
869
|
+
abortFromStop();
|
|
870
|
+
}
|
|
871
|
+
else {
|
|
872
|
+
this.abortController.signal.addEventListener('abort', abortFromStop, { once: true });
|
|
873
|
+
}
|
|
874
|
+
const timeout = setTimeout(() => {
|
|
875
|
+
if (!controller.signal.aborted) {
|
|
876
|
+
controller.abort(new Error(`${label} timed out after ${timeoutMs}ms`));
|
|
877
|
+
}
|
|
878
|
+
}, timeoutMs);
|
|
879
|
+
unrefTimer(timeout);
|
|
880
|
+
return {
|
|
881
|
+
signal: controller.signal,
|
|
882
|
+
cleanup: () => {
|
|
883
|
+
clearTimeout(timeout);
|
|
884
|
+
this.abortController.signal.removeEventListener('abort', abortFromStop);
|
|
885
|
+
},
|
|
886
|
+
};
|
|
887
|
+
}
|
|
888
|
+
// ============================================================================
|
|
889
|
+
// Stable Project Mapping
|
|
890
|
+
// ============================================================================
|
|
891
|
+
getProjectMappingId(sourceConn, sourceProjectId) {
|
|
892
|
+
return encodeURIComponent(`${sourceConn.id}:${sourceProjectId}`);
|
|
893
|
+
}
|
|
894
|
+
getProjectMappingKey(configId, sourceConn, sourceProjectId) {
|
|
895
|
+
return `${SYNC_MAPPING_PREFIX}${configId}/${this.getProjectMappingId(sourceConn, sourceProjectId)}.json`;
|
|
896
|
+
}
|
|
897
|
+
getRepoStatusKey(syncConfigId, sourceFullPath) {
|
|
898
|
+
const hash = this.sanitizePath(sourceFullPath).replace(/\//g, '__');
|
|
899
|
+
return `${SYNC_STATUS_PREFIX}${syncConfigId}/${hash}.json`;
|
|
900
|
+
}
|
|
901
|
+
isApiNotFoundError(err) {
|
|
902
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
903
|
+
return errMsg.includes(': 404 -') || errMsg.includes(': 404 ');
|
|
904
|
+
}
|
|
905
|
+
async fetchProjectRawOptional(conn, fullPath) {
|
|
906
|
+
try {
|
|
907
|
+
return await this.fetchProjectRaw(conn, fullPath);
|
|
908
|
+
}
|
|
909
|
+
catch (err) {
|
|
910
|
+
if (this.isApiNotFoundError(err))
|
|
911
|
+
return null;
|
|
912
|
+
throw err;
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
getRawProjectId(rawProject) {
|
|
916
|
+
return rawProject?.id ? String(rawProject.id) : undefined;
|
|
917
|
+
}
|
|
918
|
+
async getProjectMapping(config, sourceConn, project) {
|
|
919
|
+
const key = this.getProjectMappingKey(config.id, sourceConn, project.id);
|
|
920
|
+
const direct = await this.storageManager.getJSON(key);
|
|
921
|
+
if (direct)
|
|
922
|
+
return direct;
|
|
923
|
+
const statusFromCurrentPath = await this.storageManager.getJSON(this.getRepoStatusKey(config.id, project.fullPath));
|
|
924
|
+
if (statusFromCurrentPath?.targetFullPath) {
|
|
925
|
+
return {
|
|
926
|
+
id: this.getProjectMappingId(sourceConn, project.id),
|
|
927
|
+
syncConfigId: config.id,
|
|
928
|
+
sourceConnectionId: sourceConn.id,
|
|
929
|
+
sourceProjectId: project.id,
|
|
930
|
+
sourceFullPath: project.fullPath,
|
|
931
|
+
targetConnectionId: config.targetConnectionId,
|
|
932
|
+
targetFullPath: statusFromCurrentPath.targetFullPath,
|
|
933
|
+
targetProjectId: statusFromCurrentPath.targetProjectId,
|
|
934
|
+
updatedAt: Date.now(),
|
|
935
|
+
};
|
|
936
|
+
}
|
|
937
|
+
const statusKeys = await this.storageManager.list(`${SYNC_STATUS_PREFIX}${config.id}/`);
|
|
938
|
+
for (const statusKey of statusKeys) {
|
|
939
|
+
const status = await this.storageManager.getJSON(statusKey);
|
|
940
|
+
if (status?.sourceProjectId === project.id && status.targetFullPath) {
|
|
941
|
+
return {
|
|
942
|
+
id: this.getProjectMappingId(sourceConn, project.id),
|
|
943
|
+
syncConfigId: config.id,
|
|
944
|
+
sourceConnectionId: sourceConn.id,
|
|
945
|
+
sourceProjectId: project.id,
|
|
946
|
+
sourceFullPath: status.sourceFullPath,
|
|
947
|
+
targetConnectionId: config.targetConnectionId,
|
|
948
|
+
targetFullPath: status.targetFullPath,
|
|
949
|
+
targetProjectId: status.targetProjectId,
|
|
950
|
+
updatedAt: Date.now(),
|
|
951
|
+
};
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
return null;
|
|
955
|
+
}
|
|
956
|
+
async reconcileProjectMapping(config, project, sourceConn, targetConn, targetFullPath) {
|
|
957
|
+
const mapping = await this.getProjectMapping(config, sourceConn, project);
|
|
958
|
+
if (!mapping)
|
|
959
|
+
return;
|
|
960
|
+
const previousTargetPath = syncpath.normalizeSyncPath(mapping.targetFullPath);
|
|
961
|
+
const nextTargetPath = syncpath.normalizeSyncPath(targetFullPath);
|
|
962
|
+
if (previousTargetPath === nextTargetPath)
|
|
963
|
+
return;
|
|
964
|
+
logger.syncLog('info', `Project mapping moved for source ID ${project.id}: ${mapping.targetFullPath} -> ${targetFullPath}`, 'sync');
|
|
965
|
+
const targetProjectId = await this.moveMappedProjectTarget(config, project, sourceConn, targetConn, mapping, targetFullPath);
|
|
966
|
+
await this.persistProjectMapping(config, project, sourceConn, targetConn, targetFullPath, {
|
|
967
|
+
id: targetProjectId,
|
|
968
|
+
});
|
|
969
|
+
}
|
|
970
|
+
async moveMappedProjectTarget(config, project, sourceConn, targetConn, mapping, targetFullPath) {
|
|
971
|
+
const nextProviderFullPath = this.computeProviderProjectFullPath(targetConn, targetFullPath);
|
|
972
|
+
const previousProviderFullPath = this.computeProviderProjectFullPath(targetConn, mapping.targetFullPath);
|
|
973
|
+
const existingTarget = await this.fetchProjectRawOptional(targetConn, nextProviderFullPath);
|
|
974
|
+
const existingTargetId = this.getRawProjectId(existingTarget);
|
|
975
|
+
if (existingTarget) {
|
|
976
|
+
if (mapping.targetProjectId && existingTargetId === mapping.targetProjectId) {
|
|
977
|
+
return existingTargetId;
|
|
978
|
+
}
|
|
979
|
+
throw new Error(`Cannot move mapped project ${project.fullPath}: target path "${targetFullPath}" already exists`);
|
|
980
|
+
}
|
|
981
|
+
const previousTarget = await this.fetchProjectRawOptional(targetConn, previousProviderFullPath);
|
|
982
|
+
const previousTargetId = this.getRawProjectId(previousTarget);
|
|
983
|
+
if (!previousTarget) {
|
|
984
|
+
logger.syncLog('warn', `Stored target path "${mapping.targetFullPath}" no longer exists for source ID ${project.id}; creating fresh target`, 'sync');
|
|
985
|
+
return undefined;
|
|
986
|
+
}
|
|
987
|
+
if (mapping.targetProjectId && previousTargetId && previousTargetId !== mapping.targetProjectId) {
|
|
988
|
+
throw new Error(`Cannot move mapped project ${project.fullPath}: stored target path "${mapping.targetFullPath}" belongs to a different project`);
|
|
989
|
+
}
|
|
990
|
+
await this.moveProjectPath(config, project, sourceConn, targetConn, previousTarget, mapping.targetFullPath, targetFullPath);
|
|
991
|
+
return previousTargetId;
|
|
992
|
+
}
|
|
993
|
+
async moveProjectPath(config, project, sourceConn, targetConn, rawProject, previousTargetFullPath, nextTargetFullPath) {
|
|
994
|
+
const segments = nextTargetFullPath.split('/');
|
|
995
|
+
const projectPath = segments.pop();
|
|
996
|
+
const groupSegments = segments;
|
|
997
|
+
if (targetConn.providerType === 'gitlab') {
|
|
998
|
+
const namespaceId = await this.ensureGitLabGroupPath(targetConn, groupSegments, sourceConn, sourceConn.groupFilter, config.targetGroupOffset);
|
|
999
|
+
const rawProjectId = this.getRawProjectId(rawProject);
|
|
1000
|
+
if (!rawProjectId) {
|
|
1001
|
+
throw new Error(`Cannot move ${previousTargetFullPath}: missing target project ID`);
|
|
1002
|
+
}
|
|
1003
|
+
if (namespaceId && String(rawProject.namespace?.id) !== String(namespaceId)) {
|
|
1004
|
+
await this.rawApiCall(targetConn, 'PUT', `/api/v4/projects/${rawProjectId}/transfer`, {
|
|
1005
|
+
namespace: namespaceId,
|
|
1006
|
+
});
|
|
1007
|
+
}
|
|
1008
|
+
await this.rawApiCall(targetConn, 'PUT', `/api/v4/projects/${rawProjectId}`, {
|
|
1009
|
+
name: project.name,
|
|
1010
|
+
path: projectPath,
|
|
1011
|
+
});
|
|
1012
|
+
logger.syncLog('success', `Moved GitLab project ${previousTargetFullPath} to ${nextTargetFullPath}`, 'api');
|
|
1013
|
+
return;
|
|
1014
|
+
}
|
|
1015
|
+
const previousRepo = this.getGiteaRepoCoordinates(previousTargetFullPath, targetConn);
|
|
1016
|
+
const nextRepo = this.getGiteaRepoCoordinates(nextTargetFullPath, targetConn);
|
|
1017
|
+
const client = new plugins.giteaClient.GiteaClient(targetConn.baseUrl, targetConn.token);
|
|
1018
|
+
try {
|
|
1019
|
+
await client.getOrg(nextRepo.owner);
|
|
1020
|
+
}
|
|
1021
|
+
catch {
|
|
1022
|
+
await client.createOrg(nextRepo.owner, { visibility: 'private' });
|
|
1023
|
+
}
|
|
1024
|
+
if (previousRepo.owner !== nextRepo.owner) {
|
|
1025
|
+
await this.rawApiCall(targetConn, 'POST', `/api/v1/repos/${encodeURIComponent(previousRepo.owner)}/${encodeURIComponent(previousRepo.repo)}/transfer`, { new_owner: nextRepo.owner });
|
|
1026
|
+
}
|
|
1027
|
+
if (previousRepo.repo !== nextRepo.repo) {
|
|
1028
|
+
await this.rawApiCall(targetConn, 'PATCH', `/api/v1/repos/${encodeURIComponent(nextRepo.owner)}/${encodeURIComponent(previousRepo.repo)}`, { name: nextRepo.repo });
|
|
1029
|
+
}
|
|
1030
|
+
logger.syncLog('success', `Moved Gitea repo ${previousTargetFullPath} to ${nextTargetFullPath}`, 'api');
|
|
1031
|
+
}
|
|
1032
|
+
getGiteaRepoCoordinates(fullPath, conn) {
|
|
1033
|
+
const segments = fullPath.split('/');
|
|
1034
|
+
const projectName = segments.pop();
|
|
1035
|
+
const groupSegments = segments;
|
|
1036
|
+
return {
|
|
1037
|
+
owner: groupSegments[0] || conn.groupFilter || 'default',
|
|
1038
|
+
repo: groupSegments.length > 1
|
|
1039
|
+
? [...groupSegments.slice(1), projectName].join('-')
|
|
1040
|
+
: projectName,
|
|
1041
|
+
};
|
|
1042
|
+
}
|
|
1043
|
+
async persistProjectMapping(config, project, sourceConn, targetConn, targetFullPath, targetRawProject) {
|
|
1044
|
+
const previousMapping = await this.getProjectMapping(config, sourceConn, project);
|
|
1045
|
+
if (previousMapping && previousMapping.sourceFullPath !== project.fullPath) {
|
|
1046
|
+
await this.storageManager.delete(this.getRepoStatusKey(config.id, previousMapping.sourceFullPath));
|
|
1047
|
+
}
|
|
1048
|
+
const mapping = {
|
|
1049
|
+
id: this.getProjectMappingId(sourceConn, project.id),
|
|
1050
|
+
syncConfigId: config.id,
|
|
1051
|
+
sourceConnectionId: sourceConn.id,
|
|
1052
|
+
sourceProjectId: project.id,
|
|
1053
|
+
sourceFullPath: project.fullPath,
|
|
1054
|
+
targetConnectionId: targetConn.id,
|
|
1055
|
+
targetFullPath,
|
|
1056
|
+
targetProjectId: this.getRawProjectId(targetRawProject),
|
|
1057
|
+
updatedAt: Date.now(),
|
|
1058
|
+
};
|
|
1059
|
+
await this.storageManager.setJSON(this.getProjectMappingKey(config.id, sourceConn, project.id), mapping);
|
|
450
1060
|
}
|
|
451
1061
|
// ============================================================================
|
|
452
1062
|
// Target Hierarchy Creation
|
|
@@ -464,7 +1074,37 @@ export class SyncManager {
|
|
|
464
1074
|
}
|
|
465
1075
|
async ensureGitLabTarget(conn, groupSegments, projectName, sourceProject, sourceConn, sourceGroupFilter, targetGroupOffset) {
|
|
466
1076
|
const client = new plugins.gitlabClient.GitLabClient(conn.baseUrl, conn.token);
|
|
467
|
-
|
|
1077
|
+
const parentId = await this.ensureGitLabGroupPath(conn, groupSegments, sourceConn, sourceGroupFilter, targetGroupOffset);
|
|
1078
|
+
// Create the project if it doesn't exist
|
|
1079
|
+
const projectPath = groupSegments.length > 0
|
|
1080
|
+
? `${groupSegments.join('/')}/${projectName}`
|
|
1081
|
+
: projectName;
|
|
1082
|
+
try {
|
|
1083
|
+
// Check if project exists by path
|
|
1084
|
+
await client.getGroup(projectPath);
|
|
1085
|
+
// If this succeeds, it's actually a group, not a project... unlikely but handle
|
|
1086
|
+
}
|
|
1087
|
+
catch {
|
|
1088
|
+
// Project doesn't exist as a group path; try creating it
|
|
1089
|
+
try {
|
|
1090
|
+
await client.createProject(projectName, {
|
|
1091
|
+
path: projectName,
|
|
1092
|
+
namespaceId: parentId,
|
|
1093
|
+
description: sourceProject.description,
|
|
1094
|
+
visibility: sourceProject.visibility || 'private',
|
|
1095
|
+
});
|
|
1096
|
+
logger.info(`Created GitLab project: ${projectPath}`);
|
|
1097
|
+
}
|
|
1098
|
+
catch (createErr) {
|
|
1099
|
+
// Already exists is fine
|
|
1100
|
+
if (!String(createErr).includes('409') && !String(createErr).includes('already been taken')) {
|
|
1101
|
+
throw createErr;
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1106
|
+
async ensureGitLabGroupPath(conn, groupSegments, sourceConn, sourceGroupFilter, targetGroupOffset) {
|
|
1107
|
+
const client = new plugins.gitlabClient.GitLabClient(conn.baseUrl, conn.token);
|
|
468
1108
|
let parentId = undefined;
|
|
469
1109
|
let currentPath = '';
|
|
470
1110
|
for (const segment of groupSegments) {
|
|
@@ -474,14 +1114,12 @@ export class SyncManager {
|
|
|
474
1114
|
parentId = group.id;
|
|
475
1115
|
}
|
|
476
1116
|
catch {
|
|
477
|
-
// Group doesn't exist — create it
|
|
478
1117
|
try {
|
|
479
1118
|
const newGroup = await client.createGroup(segment, segment, parentId);
|
|
480
1119
|
parentId = newGroup.id;
|
|
481
1120
|
logger.info(`Created GitLab group: ${currentPath}`);
|
|
482
1121
|
}
|
|
483
1122
|
catch (createErr) {
|
|
484
|
-
// 409 = already exists (race condition), try fetching again
|
|
485
1123
|
if (String(createErr).includes('409') || String(createErr).includes('already')) {
|
|
486
1124
|
const group = await client.getGroup(currentPath);
|
|
487
1125
|
parentId = group.id;
|
|
@@ -491,7 +1129,6 @@ export class SyncManager {
|
|
|
491
1129
|
}
|
|
492
1130
|
}
|
|
493
1131
|
}
|
|
494
|
-
// Sync group metadata from source (once per group per sync cycle)
|
|
495
1132
|
if (sourceConn && !this.syncedGroupMeta.has(currentPath)) {
|
|
496
1133
|
const sourceGroupPath = this.reverseTargetGroupPath(currentPath, sourceGroupFilter, targetGroupOffset);
|
|
497
1134
|
if (sourceGroupPath) {
|
|
@@ -500,33 +1137,7 @@ export class SyncManager {
|
|
|
500
1137
|
}
|
|
501
1138
|
}
|
|
502
1139
|
}
|
|
503
|
-
|
|
504
|
-
const projectPath = groupSegments.length > 0
|
|
505
|
-
? `${groupSegments.join('/')}/${projectName}`
|
|
506
|
-
: projectName;
|
|
507
|
-
try {
|
|
508
|
-
// Check if project exists by path
|
|
509
|
-
await client.getGroup(projectPath);
|
|
510
|
-
// If this succeeds, it's actually a group, not a project... unlikely but handle
|
|
511
|
-
}
|
|
512
|
-
catch {
|
|
513
|
-
// Project doesn't exist as a group path; try creating it
|
|
514
|
-
try {
|
|
515
|
-
await client.createProject(projectName, {
|
|
516
|
-
path: projectName,
|
|
517
|
-
namespaceId: parentId,
|
|
518
|
-
description: sourceProject.description,
|
|
519
|
-
visibility: sourceProject.visibility || 'private',
|
|
520
|
-
});
|
|
521
|
-
logger.info(`Created GitLab project: ${projectPath}`);
|
|
522
|
-
}
|
|
523
|
-
catch (createErr) {
|
|
524
|
-
// Already exists is fine
|
|
525
|
-
if (!String(createErr).includes('409') && !String(createErr).includes('already been taken')) {
|
|
526
|
-
throw createErr;
|
|
527
|
-
}
|
|
528
|
-
}
|
|
529
|
-
}
|
|
1140
|
+
return parentId;
|
|
530
1141
|
}
|
|
531
1142
|
async ensureGiteaTarget(conn, groupSegments, projectName, sourceProject, sourceConn, sourceGroupFilter, targetGroupOffset) {
|
|
532
1143
|
const client = new plugins.giteaClient.GiteaClient(conn.baseUrl, conn.token);
|
|
@@ -582,7 +1193,7 @@ export class SyncManager {
|
|
|
582
1193
|
const expectedTargetPaths = new Set();
|
|
583
1194
|
for (const project of sourceProjects) {
|
|
584
1195
|
const targetFullPath = this.computeTargetFullPath(project.fullPath, sourceConn.groupFilter, config.targetGroupOffset);
|
|
585
|
-
expectedTargetPaths.add(targetFullPath.toLowerCase());
|
|
1196
|
+
expectedTargetPaths.add(this.computeProviderProjectFullPath(targetConn, targetFullPath).toLowerCase());
|
|
586
1197
|
}
|
|
587
1198
|
// Scope prefix — only delete repos under this prefix
|
|
588
1199
|
const scopePrefix = config.targetGroupOffset;
|
|
@@ -594,7 +1205,7 @@ export class SyncManager {
|
|
|
594
1205
|
if (this.isObsoletePath(targetProject.fullPath))
|
|
595
1206
|
continue;
|
|
596
1207
|
// Skip repos outside our managed prefix
|
|
597
|
-
if (
|
|
1208
|
+
if (!this.isTargetProjectInScope(targetConn, targetProject.fullPath, scopePrefix)) {
|
|
598
1209
|
continue;
|
|
599
1210
|
}
|
|
600
1211
|
if (!expectedTargetPaths.has(targetProject.fullPath.toLowerCase())) {
|
|
@@ -715,7 +1326,8 @@ export class SyncManager {
|
|
|
715
1326
|
const allRepos = [];
|
|
716
1327
|
let page = 1;
|
|
717
1328
|
const perPage = 50;
|
|
718
|
-
|
|
1329
|
+
const maxPages = 1000;
|
|
1330
|
+
while (page <= maxPages) {
|
|
719
1331
|
const repos = await this.rawApiCall(targetConn, 'GET', `/api/v1/orgs/${encodeURIComponent(orgName)}/repos?page=${page}&limit=${perPage}`);
|
|
720
1332
|
const repoList = Array.isArray(repos) ? repos : [];
|
|
721
1333
|
allRepos.push(...repoList);
|
|
@@ -723,6 +1335,9 @@ export class SyncManager {
|
|
|
723
1335
|
break;
|
|
724
1336
|
page++;
|
|
725
1337
|
}
|
|
1338
|
+
if (page > maxPages) {
|
|
1339
|
+
throw new Error(`Gitea org repo pagination exceeded ${maxPages} pages for ${orgName}`);
|
|
1340
|
+
}
|
|
726
1341
|
// Move each repo to obsolete
|
|
727
1342
|
for (const repo of allRepos) {
|
|
728
1343
|
try {
|
|
@@ -764,42 +1379,17 @@ export class SyncManager {
|
|
|
764
1379
|
}
|
|
765
1380
|
}
|
|
766
1381
|
computeRelativePath(fullPath, groupFilter) {
|
|
767
|
-
|
|
768
|
-
return fullPath;
|
|
769
|
-
if (fullPath.startsWith(groupFilter + '/')) {
|
|
770
|
-
return fullPath.substring(groupFilter.length + 1);
|
|
771
|
-
}
|
|
772
|
-
return fullPath;
|
|
1382
|
+
return syncpath.computeRelativePath(fullPath, groupFilter);
|
|
773
1383
|
}
|
|
774
1384
|
/**
|
|
775
1385
|
* Reverse-map a target group path to the corresponding source group path.
|
|
776
1386
|
* Returns null if the target path is part of the offset itself (not a source-derived group).
|
|
777
1387
|
*/
|
|
778
1388
|
reverseTargetGroupPath(targetGroupPath, sourceGroupFilter, targetGroupOffset) {
|
|
779
|
-
|
|
780
|
-
// Strip the target offset prefix
|
|
781
|
-
if (targetGroupOffset) {
|
|
782
|
-
if (targetGroupPath === targetGroupOffset) {
|
|
783
|
-
// This IS the offset group itself, not a source-derived group
|
|
784
|
-
return null;
|
|
785
|
-
}
|
|
786
|
-
if (targetGroupPath.startsWith(targetGroupOffset + '/')) {
|
|
787
|
-
relativePath = targetGroupPath.substring(targetGroupOffset.length + 1);
|
|
788
|
-
}
|
|
789
|
-
else {
|
|
790
|
-
// Target path is not under the offset — can't reverse-map
|
|
791
|
-
return null;
|
|
792
|
-
}
|
|
793
|
-
}
|
|
794
|
-
// Re-add the source group filter prefix
|
|
795
|
-
if (sourceGroupFilter) {
|
|
796
|
-
return `${sourceGroupFilter}/${relativePath}`;
|
|
797
|
-
}
|
|
798
|
-
return relativePath;
|
|
1389
|
+
return syncpath.reverseTargetGroupPath(targetGroupPath, sourceGroupFilter, targetGroupOffset);
|
|
799
1390
|
}
|
|
800
1391
|
computeTargetFullPath(sourceFullPath, sourceGroupFilter, targetGroupOffset) {
|
|
801
|
-
|
|
802
|
-
return targetGroupOffset ? `${targetGroupOffset}/${relativePath}` : relativePath;
|
|
1392
|
+
return syncpath.computeTargetFullPath({ sourceFullPath, sourceGroupFilter, targetGroupOffset });
|
|
803
1393
|
}
|
|
804
1394
|
/**
|
|
805
1395
|
* Validates that the sync config's targetGroupOffset is reachable
|
|
@@ -844,12 +1434,21 @@ export class SyncManager {
|
|
|
844
1434
|
else {
|
|
845
1435
|
headers['Authorization'] = `token ${conn.token}`;
|
|
846
1436
|
}
|
|
847
|
-
const
|
|
848
|
-
|
|
849
|
-
await
|
|
850
|
-
|
|
1437
|
+
const apiSignal = this.createTransferAbortSignal(RAW_API_TIMEOUT_MS, `GET ${url}`);
|
|
1438
|
+
try {
|
|
1439
|
+
const resp = await fetch(url, {
|
|
1440
|
+
headers,
|
|
1441
|
+
signal: apiSignal.signal,
|
|
1442
|
+
});
|
|
1443
|
+
if (!resp.ok) {
|
|
1444
|
+
await resp.body?.cancel();
|
|
1445
|
+
return null;
|
|
1446
|
+
}
|
|
1447
|
+
return new Uint8Array(await resp.arrayBuffer());
|
|
1448
|
+
}
|
|
1449
|
+
finally {
|
|
1450
|
+
apiSignal.cleanup();
|
|
851
1451
|
}
|
|
852
|
-
return new Uint8Array(await resp.arrayBuffer());
|
|
853
1452
|
}
|
|
854
1453
|
catch {
|
|
855
1454
|
return null;
|
|
@@ -869,16 +1468,27 @@ export class SyncManager {
|
|
|
869
1468
|
headers['Authorization'] = `token ${conn.token}`;
|
|
870
1469
|
}
|
|
871
1470
|
// Do NOT set Content-Type — let fetch set the multipart boundary
|
|
872
|
-
const
|
|
873
|
-
if (!resp.ok) {
|
|
874
|
-
const text = await resp.text();
|
|
875
|
-
throw new Error(`${method} ${apiPath}: ${resp.status} - ${text}`);
|
|
876
|
-
}
|
|
1471
|
+
const apiSignal = this.createTransferAbortSignal(RAW_API_TIMEOUT_MS, `${method} ${apiPath}`);
|
|
877
1472
|
try {
|
|
878
|
-
|
|
1473
|
+
const resp = await fetch(url, {
|
|
1474
|
+
method,
|
|
1475
|
+
headers,
|
|
1476
|
+
body: formData,
|
|
1477
|
+
signal: apiSignal.signal,
|
|
1478
|
+
});
|
|
1479
|
+
if (!resp.ok) {
|
|
1480
|
+
const text = await resp.text();
|
|
1481
|
+
throw new Error(`${method} ${apiPath}: ${resp.status} - ${text}`);
|
|
1482
|
+
}
|
|
1483
|
+
try {
|
|
1484
|
+
return await resp.json();
|
|
1485
|
+
}
|
|
1486
|
+
catch {
|
|
1487
|
+
return undefined;
|
|
1488
|
+
}
|
|
879
1489
|
}
|
|
880
|
-
|
|
881
|
-
|
|
1490
|
+
finally {
|
|
1491
|
+
apiSignal.cleanup();
|
|
882
1492
|
}
|
|
883
1493
|
}
|
|
884
1494
|
/**
|
|
@@ -1407,20 +2017,28 @@ export class SyncManager {
|
|
|
1407
2017
|
else {
|
|
1408
2018
|
headers['Authorization'] = `token ${conn.token}`;
|
|
1409
2019
|
}
|
|
1410
|
-
const
|
|
1411
|
-
|
|
1412
|
-
headers,
|
|
1413
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
1414
|
-
});
|
|
1415
|
-
if (!resp.ok) {
|
|
1416
|
-
const text = await resp.text();
|
|
1417
|
-
throw new Error(`${method} ${apiPath}: ${resp.status} - ${text}`);
|
|
1418
|
-
}
|
|
2020
|
+
const apiSignal = this.createTransferAbortSignal(RAW_API_TIMEOUT_MS, `${method} ${apiPath}`);
|
|
2021
|
+
let resp;
|
|
1419
2022
|
try {
|
|
1420
|
-
|
|
2023
|
+
resp = await fetch(url, {
|
|
2024
|
+
method,
|
|
2025
|
+
headers,
|
|
2026
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
2027
|
+
signal: apiSignal.signal,
|
|
2028
|
+
});
|
|
2029
|
+
if (!resp.ok) {
|
|
2030
|
+
const text = await resp.text();
|
|
2031
|
+
throw new Error(`${method} ${apiPath}: ${resp.status} - ${text}`);
|
|
2032
|
+
}
|
|
2033
|
+
try {
|
|
2034
|
+
return await resp.json();
|
|
2035
|
+
}
|
|
2036
|
+
catch {
|
|
2037
|
+
return undefined;
|
|
2038
|
+
}
|
|
1421
2039
|
}
|
|
1422
|
-
|
|
1423
|
-
|
|
2040
|
+
finally {
|
|
2041
|
+
apiSignal.cleanup();
|
|
1424
2042
|
}
|
|
1425
2043
|
}
|
|
1426
2044
|
generateSuffix() {
|
|
@@ -1708,6 +2326,81 @@ export class SyncManager {
|
|
|
1708
2326
|
}));
|
|
1709
2327
|
});
|
|
1710
2328
|
}
|
|
2329
|
+
async runCommand(command, args, cwd, options = {}) {
|
|
2330
|
+
if (this.stopping) {
|
|
2331
|
+
throw new Error('SyncManager is stopping');
|
|
2332
|
+
}
|
|
2333
|
+
return await new Promise((resolve, reject) => {
|
|
2334
|
+
const child = plugins.childProcess.spawn(command, args, {
|
|
2335
|
+
cwd,
|
|
2336
|
+
env: { ...process.env, ...options.env },
|
|
2337
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
2338
|
+
});
|
|
2339
|
+
this.activeGitChildren.add(child);
|
|
2340
|
+
const stdoutChunks = [];
|
|
2341
|
+
const stderrChunks = [];
|
|
2342
|
+
let stdoutBytes = 0;
|
|
2343
|
+
let stderrBytes = 0;
|
|
2344
|
+
let settled = false;
|
|
2345
|
+
let timedOut = false;
|
|
2346
|
+
let timeoutTimer;
|
|
2347
|
+
let forceKillTimer;
|
|
2348
|
+
const appendChunk = (chunks, chunk, currentBytes) => {
|
|
2349
|
+
const nextBytes = currentBytes + chunk.byteLength;
|
|
2350
|
+
const remainingBytes = MAX_COMMAND_OUTPUT_BYTES - currentBytes;
|
|
2351
|
+
if (remainingBytes > 0) {
|
|
2352
|
+
chunks.push(chunk.byteLength <= remainingBytes ? chunk : chunk.subarray(0, remainingBytes));
|
|
2353
|
+
}
|
|
2354
|
+
return nextBytes;
|
|
2355
|
+
};
|
|
2356
|
+
const finish = (callback) => {
|
|
2357
|
+
if (settled)
|
|
2358
|
+
return;
|
|
2359
|
+
settled = true;
|
|
2360
|
+
if (timeoutTimer)
|
|
2361
|
+
clearTimeout(timeoutTimer);
|
|
2362
|
+
if (forceKillTimer)
|
|
2363
|
+
clearTimeout(forceKillTimer);
|
|
2364
|
+
this.activeGitChildren.delete(child);
|
|
2365
|
+
callback();
|
|
2366
|
+
};
|
|
2367
|
+
if (options.timeoutMs) {
|
|
2368
|
+
timeoutTimer = setTimeout(() => {
|
|
2369
|
+
timedOut = true;
|
|
2370
|
+
if (child.exitCode === null && child.signalCode === null) {
|
|
2371
|
+
child.kill('SIGTERM');
|
|
2372
|
+
forceKillTimer = setTimeout(() => {
|
|
2373
|
+
if (child.exitCode === null && child.signalCode === null) {
|
|
2374
|
+
child.kill('SIGKILL');
|
|
2375
|
+
}
|
|
2376
|
+
}, 5000);
|
|
2377
|
+
unrefTimer(forceKillTimer);
|
|
2378
|
+
}
|
|
2379
|
+
}, options.timeoutMs);
|
|
2380
|
+
unrefTimer(timeoutTimer);
|
|
2381
|
+
}
|
|
2382
|
+
child.stdout.on('data', (chunk) => {
|
|
2383
|
+
stdoutBytes = appendChunk(stdoutChunks, chunk, stdoutBytes);
|
|
2384
|
+
});
|
|
2385
|
+
child.stderr.on('data', (chunk) => {
|
|
2386
|
+
stderrBytes = appendChunk(stderrChunks, chunk, stderrBytes);
|
|
2387
|
+
});
|
|
2388
|
+
child.on('error', (err) => finish(() => reject(err)));
|
|
2389
|
+
child.on('close', (code, signal) => finish(() => {
|
|
2390
|
+
const stderr = plugins.Buffer.concat(stderrChunks).toString('utf8');
|
|
2391
|
+
if (timedOut) {
|
|
2392
|
+
reject(new Error(`${command} timed out after ${options.timeoutMs}ms: ${stderr.trim()}`));
|
|
2393
|
+
return;
|
|
2394
|
+
}
|
|
2395
|
+
if (code !== 0) {
|
|
2396
|
+
const exitInfo = signal ? `signal ${signal}` : `code ${code}`;
|
|
2397
|
+
reject(new Error(`${command} failed with ${exitInfo}: ${stderr.trim()}`));
|
|
2398
|
+
return;
|
|
2399
|
+
}
|
|
2400
|
+
resolve(plugins.Buffer.concat(stdoutChunks).toString('utf8'));
|
|
2401
|
+
}));
|
|
2402
|
+
});
|
|
2403
|
+
}
|
|
1711
2404
|
// ============================================================================
|
|
1712
2405
|
// Persistence
|
|
1713
2406
|
// ============================================================================
|
|
@@ -1734,7 +2427,7 @@ export class SyncManager {
|
|
|
1734
2427
|
}
|
|
1735
2428
|
async updateRepoStatus(syncConfigId, sourceFullPath, updates) {
|
|
1736
2429
|
const hash = this.sanitizePath(sourceFullPath).replace(/\//g, '__');
|
|
1737
|
-
const key =
|
|
2430
|
+
const key = this.getRepoStatusKey(syncConfigId, sourceFullPath);
|
|
1738
2431
|
let status = await this.storageManager.getJSON(key);
|
|
1739
2432
|
if (!status) {
|
|
1740
2433
|
status = {
|
|
@@ -1784,4 +2477,4 @@ export class SyncManager {
|
|
|
1784
2477
|
}
|
|
1785
2478
|
}
|
|
1786
2479
|
}
|
|
1787
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY21hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9jbGFzc2VzL3N5bmNtYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQVF4RixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUM7QUFDN0IsTUFBTSxrQkFBa0IsR0FBRyxlQUFlLENBQUM7QUFFM0M7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBYVo7SUFDQTtJQUNBO0lBZEYsT0FBTyxHQUFrQyxFQUFFLENBQUM7SUFDNUMsTUFBTSxHQUFnRCxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ2hFLFdBQVcsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNyQyxlQUFlLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDekMsaUJBQWlCLEdBQXVDLElBQUksQ0FBQztJQUM3RCxpQkFBaUIsR0FBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNuRCxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBZ0IsQ0FBQztJQUM1QyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWpCLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFFekIsWUFDVSxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsU0FBb0I7UUFGcEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUMzQixDQUFDO0lBRUosS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixpRkFBaUY7UUFDakYsSUFBSSxDQUFDLFdB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
|
|
2480
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY21hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9jbGFzc2VzL3N5bmNtYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU14RixPQUFPLEtBQUssUUFBUSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUM7QUFDN0IsTUFBTSxrQkFBa0IsR0FBRyxlQUFlLENBQUM7QUFDM0MsTUFBTSxtQkFBbUIsR0FBRyxpQkFBaUIsQ0FBQztBQUM5QyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUNqQyxNQUFNLDhCQUE4QixHQUFHLENBQUMsQ0FBQztBQUN6QyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUNqQyxNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQztBQUN6QyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQzlDLE1BQU0saUNBQWlDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDekQsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNsRCxNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3pDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQVM3Qzs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFpQlo7SUFDQTtJQUNBO0lBbEJGLE9BQU8sR0FBa0MsRUFBRSxDQUFDO0lBQzVDLE1BQU0sR0FBZ0QsSUFBSSxHQUFHLEVBQUUsQ0FB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
|