@generacy-ai/generacy-plugin-cloud-build 0.0.0-preview-20260304013206
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/LICENSE +191 -0
- package/README.md +228 -0
- package/dist/auth/auth-provider.d.ts +26 -0
- package/dist/auth/auth-provider.d.ts.map +1 -0
- package/dist/auth/auth-provider.js +72 -0
- package/dist/auth/auth-provider.js.map +1 -0
- package/dist/auth/types.d.ts +26 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +5 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/client.d.ts +43 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +87 -0
- package/dist/client.js.map +1 -0
- package/dist/config/schema.d.ts +73 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +32 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/types.d.ts +30 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +11 -0
- package/dist/config/types.js.map +1 -0
- package/dist/errors.d.ts +75 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +144 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/operations/artifacts.d.ts +35 -0
- package/dist/operations/artifacts.d.ts.map +1 -0
- package/dist/operations/artifacts.js +168 -0
- package/dist/operations/artifacts.js.map +1 -0
- package/dist/operations/builds.d.ts +91 -0
- package/dist/operations/builds.d.ts.map +1 -0
- package/dist/operations/builds.js +397 -0
- package/dist/operations/builds.js.map +1 -0
- package/dist/operations/logs.d.ts +56 -0
- package/dist/operations/logs.d.ts.map +1 -0
- package/dist/operations/logs.js +207 -0
- package/dist/operations/logs.js.map +1 -0
- package/dist/operations/triggers.d.ts +76 -0
- package/dist/operations/triggers.d.ts.map +1 -0
- package/dist/operations/triggers.js +308 -0
- package/dist/operations/triggers.js.map +1 -0
- package/dist/plugin.d.ts +156 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +270 -0
- package/dist/plugin.js.map +1 -0
- package/dist/streaming/log-stream.d.ts +34 -0
- package/dist/streaming/log-stream.d.ts.map +1 -0
- package/dist/streaming/log-stream.js +89 -0
- package/dist/streaming/log-stream.js.map +1 -0
- package/dist/streaming/types.d.ts +27 -0
- package/dist/streaming/types.d.ts.map +1 -0
- package/dist/streaming/types.js +6 -0
- package/dist/streaming/types.js.map +1 -0
- package/dist/types/artifacts.d.ts +46 -0
- package/dist/types/artifacts.d.ts.map +1 -0
- package/dist/types/artifacts.js +6 -0
- package/dist/types/artifacts.js.map +1 -0
- package/dist/types/builds.d.ts +134 -0
- package/dist/types/builds.d.ts.map +1 -0
- package/dist/types/builds.js +5 -0
- package/dist/types/builds.js.map +1 -0
- package/dist/types/logs.d.ts +18 -0
- package/dist/types/logs.d.ts.map +1 -0
- package/dist/types/logs.js +5 -0
- package/dist/types/logs.js.map +1 -0
- package/dist/types/triggers.d.ts +71 -0
- package/dist/types/triggers.d.ts.map +1 -0
- package/dist/types/triggers.js +5 -0
- package/dist/types/triggers.js.map +1 -0
- package/dist/utils/retry.d.ts +41 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +107 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/validation.d.ts +53 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +75 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +58 -0
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main Cloud Build Plugin class.
|
|
3
|
+
*
|
|
4
|
+
* Extends AbstractCICDPlugin to provide the standard CICDPipeline interface
|
|
5
|
+
* while also exposing Cloud Build-specific functionality.
|
|
6
|
+
*
|
|
7
|
+
* Aggregates all operations into a unified plugin interface:
|
|
8
|
+
* - Build operations (via CICDPipeline interface)
|
|
9
|
+
* - Log streaming
|
|
10
|
+
* - Artifact access
|
|
11
|
+
* - Trigger management
|
|
12
|
+
*/
|
|
13
|
+
import pino from 'pino';
|
|
14
|
+
import { AbstractCICDPlugin } from '@generacy-ai/latency-plugin-ci-cd';
|
|
15
|
+
import { parseConfig } from './config/schema.js';
|
|
16
|
+
import { createAuthProvider } from './auth/auth-provider.js';
|
|
17
|
+
import { BuildOperations } from './operations/builds.js';
|
|
18
|
+
import { LogOperations } from './operations/logs.js';
|
|
19
|
+
import { ArtifactOperations } from './operations/artifacts.js';
|
|
20
|
+
import { TriggerOperations } from './operations/triggers.js';
|
|
21
|
+
/**
|
|
22
|
+
* Google Cloud Build Plugin for Generacy.
|
|
23
|
+
*
|
|
24
|
+
* Extends AbstractCICDPlugin to provide the standard CICDPipeline interface
|
|
25
|
+
* (triggerPipeline, getPipelineStatus, cancelPipeline, listPipelines) while
|
|
26
|
+
* also exposing Cloud Build-specific operations like log streaming, artifact
|
|
27
|
+
* access, and trigger management.
|
|
28
|
+
*/
|
|
29
|
+
export class CloudBuildPlugin extends AbstractCICDPlugin {
|
|
30
|
+
config;
|
|
31
|
+
logger;
|
|
32
|
+
buildOps;
|
|
33
|
+
logOps;
|
|
34
|
+
artifactOps;
|
|
35
|
+
triggerOps;
|
|
36
|
+
constructor(configInput, options = {}) {
|
|
37
|
+
super();
|
|
38
|
+
// Parse and validate configuration
|
|
39
|
+
this.config = parseConfig(configInput);
|
|
40
|
+
// Create logger with secret redaction
|
|
41
|
+
this.logger = options.logger ?? this.createLogger();
|
|
42
|
+
// Create auth provider
|
|
43
|
+
const authProvider = createAuthProvider({
|
|
44
|
+
projectId: this.config.projectId,
|
|
45
|
+
serviceAccountKey: this.config.serviceAccountKey,
|
|
46
|
+
});
|
|
47
|
+
// Get clients from auth provider
|
|
48
|
+
const cloudBuildClient = authProvider.getCloudBuildClient();
|
|
49
|
+
const storageClient = authProvider.getStorageClient();
|
|
50
|
+
// Initialize operation modules
|
|
51
|
+
this.buildOps = new BuildOperations(cloudBuildClient, this.config, this.logger);
|
|
52
|
+
this.logOps = new LogOperations(cloudBuildClient, storageClient, this.config, this.logger);
|
|
53
|
+
this.artifactOps = new ArtifactOperations(cloudBuildClient, storageClient, this.config, this.logger);
|
|
54
|
+
this.triggerOps = new TriggerOperations(cloudBuildClient, this.config, this.logger);
|
|
55
|
+
this.logger.debug({ projectId: this.config.projectId }, 'Cloud Build plugin initialized');
|
|
56
|
+
}
|
|
57
|
+
// ==========================================================================
|
|
58
|
+
// AbstractCICDPlugin abstract method implementations
|
|
59
|
+
// ==========================================================================
|
|
60
|
+
/**
|
|
61
|
+
* Trigger a pipeline run (implements abstract method).
|
|
62
|
+
*
|
|
63
|
+
* Maps to Cloud Build's trigger mechanism.
|
|
64
|
+
*/
|
|
65
|
+
async doTrigger(pipelineId, options) {
|
|
66
|
+
this.logger.debug({ pipelineId, options }, 'Triggering pipeline via CICDPipeline interface');
|
|
67
|
+
// Note: Branch is passed but requires repoName for full RepoSource
|
|
68
|
+
// Cloud Build triggers typically already have repo config, so we pass undefined
|
|
69
|
+
const build = await this.buildOps.triggerBuild(pipelineId, undefined);
|
|
70
|
+
return this.mapBuildToPipelineRun(build);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get pipeline run status (implements abstract method).
|
|
74
|
+
*
|
|
75
|
+
* Maps to Cloud Build's getBuild.
|
|
76
|
+
*/
|
|
77
|
+
async doGetStatus(runId) {
|
|
78
|
+
this.logger.debug({ runId }, 'Getting pipeline status via CICDPipeline interface');
|
|
79
|
+
const build = await this.buildOps.getBuild(runId);
|
|
80
|
+
return this.mapBuildToPipelineRun(build);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Cancel a pipeline run (implements abstract method).
|
|
84
|
+
*
|
|
85
|
+
* Maps to Cloud Build's cancelBuild.
|
|
86
|
+
*/
|
|
87
|
+
async doCancel(runId) {
|
|
88
|
+
this.logger.debug({ runId }, 'Cancelling pipeline via CICDPipeline interface');
|
|
89
|
+
await this.buildOps.cancelBuild(runId);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* List available pipelines (implements abstract method).
|
|
93
|
+
*
|
|
94
|
+
* Maps to Cloud Build's listTriggers.
|
|
95
|
+
*/
|
|
96
|
+
async doListPipelines() {
|
|
97
|
+
this.logger.debug('Listing pipelines via CICDPipeline interface');
|
|
98
|
+
const triggers = await this.triggerOps.listTriggers();
|
|
99
|
+
return triggers.map((trigger) => this.mapTriggerToPipeline(trigger));
|
|
100
|
+
}
|
|
101
|
+
// ==========================================================================
|
|
102
|
+
// Cloud Build-specific public API (for backwards compatibility)
|
|
103
|
+
// ==========================================================================
|
|
104
|
+
/**
|
|
105
|
+
* Trigger a build from an existing trigger.
|
|
106
|
+
*/
|
|
107
|
+
async triggerBuild(triggerId, source) {
|
|
108
|
+
return this.buildOps.triggerBuild(triggerId, source);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Run a build from inline configuration.
|
|
112
|
+
*/
|
|
113
|
+
async runBuild(config) {
|
|
114
|
+
return this.buildOps.runBuild(config);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get a single build by ID.
|
|
118
|
+
*/
|
|
119
|
+
async getBuild(buildId) {
|
|
120
|
+
return this.buildOps.getBuild(buildId);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* List builds with optional filtering.
|
|
124
|
+
*/
|
|
125
|
+
async listBuilds(filter) {
|
|
126
|
+
return this.buildOps.listBuilds(filter);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Cancel a running build.
|
|
130
|
+
*/
|
|
131
|
+
async cancelBuild(buildId) {
|
|
132
|
+
return this.buildOps.cancelBuild(buildId);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Retry a failed build.
|
|
136
|
+
*/
|
|
137
|
+
async retryBuild(buildId) {
|
|
138
|
+
return this.buildOps.retryBuild(buildId);
|
|
139
|
+
}
|
|
140
|
+
// ============================================================================
|
|
141
|
+
// Log Operations
|
|
142
|
+
// ============================================================================
|
|
143
|
+
/**
|
|
144
|
+
* Stream logs from a build as an AsyncIterable.
|
|
145
|
+
*/
|
|
146
|
+
streamLogs(buildId, options) {
|
|
147
|
+
return this.logOps.streamLogs(buildId, options);
|
|
148
|
+
}
|
|
149
|
+
// ============================================================================
|
|
150
|
+
// Artifact Operations
|
|
151
|
+
// ============================================================================
|
|
152
|
+
/**
|
|
153
|
+
* List artifacts for a build.
|
|
154
|
+
*/
|
|
155
|
+
async listArtifacts(buildId) {
|
|
156
|
+
return this.artifactOps.listArtifacts(buildId);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Download an artifact as a Buffer.
|
|
160
|
+
* Throws if artifact exceeds 100MB.
|
|
161
|
+
*/
|
|
162
|
+
async getArtifact(buildId, path) {
|
|
163
|
+
return this.artifactOps.getArtifact(buildId, path);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Download an artifact as a ReadableStream.
|
|
167
|
+
* Use for large files that exceed the 100MB Buffer limit.
|
|
168
|
+
*/
|
|
169
|
+
async getArtifactStream(buildId, path) {
|
|
170
|
+
return this.artifactOps.getArtifactStream(buildId, path);
|
|
171
|
+
}
|
|
172
|
+
// ============================================================================
|
|
173
|
+
// Trigger Operations
|
|
174
|
+
// ============================================================================
|
|
175
|
+
/**
|
|
176
|
+
* List all build triggers.
|
|
177
|
+
*/
|
|
178
|
+
async listTriggers() {
|
|
179
|
+
return this.triggerOps.listTriggers();
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Create a new build trigger.
|
|
183
|
+
*/
|
|
184
|
+
async createTrigger(config) {
|
|
185
|
+
return this.triggerOps.createTrigger(config);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Update an existing build trigger.
|
|
189
|
+
*/
|
|
190
|
+
async updateTrigger(triggerId, config) {
|
|
191
|
+
return this.triggerOps.updateTrigger(triggerId, config);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Delete a build trigger.
|
|
195
|
+
*/
|
|
196
|
+
async deleteTrigger(triggerId) {
|
|
197
|
+
return this.triggerOps.deleteTrigger(triggerId);
|
|
198
|
+
}
|
|
199
|
+
// ============================================================================
|
|
200
|
+
// Private Methods
|
|
201
|
+
// ============================================================================
|
|
202
|
+
/**
|
|
203
|
+
* Create a logger with secret redaction.
|
|
204
|
+
*/
|
|
205
|
+
createLogger() {
|
|
206
|
+
return pino({
|
|
207
|
+
name: 'generacy-plugin-cloud-build',
|
|
208
|
+
level: process.env.LOG_LEVEL ?? 'info',
|
|
209
|
+
redact: {
|
|
210
|
+
paths: [
|
|
211
|
+
'serviceAccountKey',
|
|
212
|
+
'config.serviceAccountKey',
|
|
213
|
+
'*.serviceAccountKey',
|
|
214
|
+
'credentials',
|
|
215
|
+
'private_key',
|
|
216
|
+
],
|
|
217
|
+
censor: '[REDACTED]',
|
|
218
|
+
},
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Map a Cloud Build Build to a Latency PipelineRun.
|
|
223
|
+
*/
|
|
224
|
+
mapBuildToPipelineRun(build) {
|
|
225
|
+
return {
|
|
226
|
+
id: build.id,
|
|
227
|
+
pipelineId: build.buildTriggerId ?? 'inline',
|
|
228
|
+
status: this.mapBuildStatus(build.status),
|
|
229
|
+
createdAt: new Date(build.createTime),
|
|
230
|
+
startedAt: build.startTime ? new Date(build.startTime) : undefined,
|
|
231
|
+
completedAt: build.finishTime ? new Date(build.finishTime) : undefined,
|
|
232
|
+
logsUrl: build.logUrl,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Map a Cloud Build status to a Latency PipelineStatus.
|
|
237
|
+
*/
|
|
238
|
+
mapBuildStatus(status) {
|
|
239
|
+
switch (status) {
|
|
240
|
+
case 'QUEUED':
|
|
241
|
+
case 'PENDING':
|
|
242
|
+
return 'pending';
|
|
243
|
+
case 'WORKING':
|
|
244
|
+
return 'running';
|
|
245
|
+
case 'SUCCESS':
|
|
246
|
+
return 'completed';
|
|
247
|
+
case 'FAILURE':
|
|
248
|
+
case 'INTERNAL_ERROR':
|
|
249
|
+
case 'TIMEOUT':
|
|
250
|
+
case 'EXPIRED':
|
|
251
|
+
return 'failed';
|
|
252
|
+
case 'CANCELLED':
|
|
253
|
+
return 'cancelled';
|
|
254
|
+
default:
|
|
255
|
+
return 'pending';
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Map a Cloud Build Trigger to a Latency Pipeline.
|
|
260
|
+
*/
|
|
261
|
+
mapTriggerToPipeline(trigger) {
|
|
262
|
+
return {
|
|
263
|
+
id: trigger.id,
|
|
264
|
+
name: trigger.name ?? trigger.id,
|
|
265
|
+
description: trigger.description,
|
|
266
|
+
defaultBranch: trigger.triggerTemplate?.branchName,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log streaming implementation using AsyncIterable.
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Real-time log streaming with polling
|
|
6
|
+
* - Automatic completion when build finishes
|
|
7
|
+
* - Natural backpressure via async iteration
|
|
8
|
+
* - Configurable polling interval
|
|
9
|
+
*/
|
|
10
|
+
import type { Logger } from 'pino';
|
|
11
|
+
import type { LogEntry } from '../types/logs.js';
|
|
12
|
+
import type { LogStreamOptions, LogFetcher } from './types.js';
|
|
13
|
+
export declare class LogStream implements AsyncIterable<LogEntry> {
|
|
14
|
+
private readonly buildId;
|
|
15
|
+
private readonly fetcher;
|
|
16
|
+
private readonly pollingIntervalMs;
|
|
17
|
+
private readonly logger;
|
|
18
|
+
private offset;
|
|
19
|
+
private isComplete;
|
|
20
|
+
constructor(buildId: string, fetcher: LogFetcher, logger: Logger, options?: LogStreamOptions);
|
|
21
|
+
[Symbol.asyncIterator](): AsyncIterator<LogEntry>;
|
|
22
|
+
private fetchNextChunk;
|
|
23
|
+
private checkBuildCompletion;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a log stream for a build.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createLogStream(buildId: string, fetcher: LogFetcher, logger: Logger, options?: LogStreamOptions): AsyncIterable<LogEntry>;
|
|
29
|
+
/**
|
|
30
|
+
* Collect all log entries from a stream.
|
|
31
|
+
* Useful for testing or when you need all logs at once.
|
|
32
|
+
*/
|
|
33
|
+
export declare function collectLogs(stream: AsyncIterable<LogEntry>): Promise<LogEntry[]>;
|
|
34
|
+
//# sourceMappingURL=log-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-stream.d.ts","sourceRoot":"","sources":["../../src/streaming/log-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAEX,MAAM,YAAY,CAAC;AAMpB,qBAAa,SAAU,YAAW,aAAa,CAAC,QAAQ,CAAC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAkB;gBAGlC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAAqB;IASzB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC;YA+B1C,cAAc;YAId,oBAAoB;CAiBnC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,gBAAgB,GACzB,aAAa,CAAC,QAAQ,CAAC,CAEzB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAQtF"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log streaming implementation using AsyncIterable.
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Real-time log streaming with polling
|
|
6
|
+
* - Automatic completion when build finishes
|
|
7
|
+
* - Natural backpressure via async iteration
|
|
8
|
+
* - Configurable polling interval
|
|
9
|
+
*/
|
|
10
|
+
import { DEFAULT_POLLING_INTERVAL_MS } from './types.js';
|
|
11
|
+
import { sleep } from '../utils/retry.js';
|
|
12
|
+
const TERMINAL_BUILD_STATUSES = ['SUCCESS', 'FAILURE', 'INTERNAL_ERROR', 'TIMEOUT', 'CANCELLED', 'EXPIRED'];
|
|
13
|
+
export class LogStream {
|
|
14
|
+
buildId;
|
|
15
|
+
fetcher;
|
|
16
|
+
pollingIntervalMs;
|
|
17
|
+
logger;
|
|
18
|
+
offset;
|
|
19
|
+
isComplete = false;
|
|
20
|
+
constructor(buildId, fetcher, logger, options = {}) {
|
|
21
|
+
this.buildId = buildId;
|
|
22
|
+
this.fetcher = fetcher;
|
|
23
|
+
this.logger = logger;
|
|
24
|
+
this.pollingIntervalMs = options.pollingIntervalMs ?? DEFAULT_POLLING_INTERVAL_MS;
|
|
25
|
+
this.offset = options.startOffset ?? 0;
|
|
26
|
+
}
|
|
27
|
+
async *[Symbol.asyncIterator]() {
|
|
28
|
+
this.logger.debug({ buildId: this.buildId }, 'Starting log stream');
|
|
29
|
+
while (!this.isComplete) {
|
|
30
|
+
try {
|
|
31
|
+
const chunk = await this.fetchNextChunk();
|
|
32
|
+
for (const entry of chunk.entries) {
|
|
33
|
+
yield entry;
|
|
34
|
+
}
|
|
35
|
+
this.offset = chunk.nextOffset;
|
|
36
|
+
if (chunk.isComplete) {
|
|
37
|
+
this.isComplete = true;
|
|
38
|
+
this.logger.debug({ buildId: this.buildId }, 'Log stream complete');
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
// Wait before polling again
|
|
42
|
+
await sleep(this.pollingIntervalMs);
|
|
43
|
+
// Check if build has finished
|
|
44
|
+
await this.checkBuildCompletion();
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
this.logger.error({ error, buildId: this.buildId }, 'Error fetching logs');
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async fetchNextChunk() {
|
|
53
|
+
return this.fetcher.fetchLogs(this.buildId, this.offset);
|
|
54
|
+
}
|
|
55
|
+
async checkBuildCompletion() {
|
|
56
|
+
try {
|
|
57
|
+
const status = await this.fetcher.getBuildStatus(this.buildId);
|
|
58
|
+
if (TERMINAL_BUILD_STATUSES.includes(status)) {
|
|
59
|
+
// Fetch any remaining logs before completing
|
|
60
|
+
const finalChunk = await this.fetchNextChunk();
|
|
61
|
+
if (finalChunk.entries.length === 0) {
|
|
62
|
+
this.isComplete = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
this.logger.warn({ error, buildId: this.buildId }, 'Failed to check build status');
|
|
68
|
+
// Continue streaming, will retry on next iteration
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Create a log stream for a build.
|
|
74
|
+
*/
|
|
75
|
+
export function createLogStream(buildId, fetcher, logger, options) {
|
|
76
|
+
return new LogStream(buildId, fetcher, logger, options);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Collect all log entries from a stream.
|
|
80
|
+
* Useful for testing or when you need all logs at once.
|
|
81
|
+
*/
|
|
82
|
+
export async function collectLogs(stream) {
|
|
83
|
+
const entries = [];
|
|
84
|
+
for await (const entry of stream) {
|
|
85
|
+
entries.push(entry);
|
|
86
|
+
}
|
|
87
|
+
return entries;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=log-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-stream.js","sourceRoot":"","sources":["../../src/streaming/log-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for log streaming.
|
|
3
|
+
*/
|
|
4
|
+
import type { LogEntry, LogSeverity } from '../types/logs.js';
|
|
5
|
+
export interface LogStreamOptions {
|
|
6
|
+
pollingIntervalMs?: number;
|
|
7
|
+
startOffset?: number;
|
|
8
|
+
maxRetries?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface LogStreamState {
|
|
11
|
+
offset: number;
|
|
12
|
+
isComplete: boolean;
|
|
13
|
+
buildStatus?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface LogChunk {
|
|
16
|
+
entries: LogEntry[];
|
|
17
|
+
nextOffset: number;
|
|
18
|
+
isComplete: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface LogFetcher {
|
|
21
|
+
fetchLogs(buildId: string, offset: number): Promise<LogChunk>;
|
|
22
|
+
getBuildStatus(buildId: string): Promise<string>;
|
|
23
|
+
}
|
|
24
|
+
export declare const DEFAULT_POLLING_INTERVAL_MS = 2000;
|
|
25
|
+
export declare const DEFAULT_MAX_RETRIES = 3;
|
|
26
|
+
export { LogEntry, LogSeverity };
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/streaming/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9D,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD;AAED,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAChD,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/streaming/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2BH,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact-related types for the Cloud Build plugin.
|
|
3
|
+
*/
|
|
4
|
+
export interface Artifact {
|
|
5
|
+
path: string;
|
|
6
|
+
bucket: string;
|
|
7
|
+
size: number;
|
|
8
|
+
contentType?: string;
|
|
9
|
+
generation?: string;
|
|
10
|
+
md5Hash?: string;
|
|
11
|
+
crc32c?: string;
|
|
12
|
+
updated: Date;
|
|
13
|
+
}
|
|
14
|
+
export interface MavenArtifact {
|
|
15
|
+
repository: string;
|
|
16
|
+
path: string;
|
|
17
|
+
artifactId: string;
|
|
18
|
+
groupId: string;
|
|
19
|
+
version?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface PythonPackage {
|
|
22
|
+
repository: string;
|
|
23
|
+
paths: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface NpmPackage {
|
|
26
|
+
repository: string;
|
|
27
|
+
packagePath: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ArtifactObjects {
|
|
30
|
+
location: string;
|
|
31
|
+
paths: string[];
|
|
32
|
+
timing?: {
|
|
33
|
+
startTime: Date;
|
|
34
|
+
endTime: Date;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export interface BuildArtifacts {
|
|
38
|
+
images?: string[];
|
|
39
|
+
objects?: ArtifactObjects;
|
|
40
|
+
mavenArtifacts?: MavenArtifact[];
|
|
41
|
+
pythonPackages?: PythonPackage[];
|
|
42
|
+
npmPackages?: NpmPackage[];
|
|
43
|
+
}
|
|
44
|
+
/** Maximum artifact size for Buffer download (100MB) */
|
|
45
|
+
export declare const MAX_ARTIFACT_SIZE_BYTES: number;
|
|
46
|
+
//# sourceMappingURL=artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/types/artifacts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,SAAS,EAAE,IAAI,CAAC;QAChB,OAAO,EAAE,IAAI,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,wDAAwD;AACxD,eAAO,MAAM,uBAAuB,QAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/types/artifacts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgDH,wDAAwD;AACxD,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build-related types for the Cloud Build plugin.
|
|
3
|
+
*/
|
|
4
|
+
export type BuildStatus = 'STATUS_UNKNOWN' | 'PENDING' | 'QUEUED' | 'WORKING' | 'SUCCESS' | 'FAILURE' | 'INTERNAL_ERROR' | 'TIMEOUT' | 'CANCELLED' | 'EXPIRED';
|
|
5
|
+
export type BuildStepStatus = 'STATUS_UNKNOWN' | 'PENDING' | 'QUEUED' | 'WORKING' | 'SUCCESS' | 'FAILURE' | 'INTERNAL_ERROR' | 'TIMEOUT' | 'CANCELLED';
|
|
6
|
+
export type MachineType = 'UNSPECIFIED' | 'N1_HIGHCPU_8' | 'N1_HIGHCPU_32' | 'E2_HIGHCPU_8' | 'E2_HIGHCPU_32' | 'E2_MEDIUM';
|
|
7
|
+
export interface TimeSpan {
|
|
8
|
+
startTime: Date;
|
|
9
|
+
endTime: Date;
|
|
10
|
+
}
|
|
11
|
+
export interface Volume {
|
|
12
|
+
name: string;
|
|
13
|
+
path: string;
|
|
14
|
+
}
|
|
15
|
+
export interface BuildStep {
|
|
16
|
+
id?: string;
|
|
17
|
+
name: string;
|
|
18
|
+
entrypoint?: string;
|
|
19
|
+
args?: string[];
|
|
20
|
+
dir?: string;
|
|
21
|
+
env?: string[];
|
|
22
|
+
secretEnv?: string[];
|
|
23
|
+
waitFor?: string[];
|
|
24
|
+
timeout?: string;
|
|
25
|
+
status: BuildStepStatus;
|
|
26
|
+
timing?: TimeSpan;
|
|
27
|
+
pullTiming?: TimeSpan;
|
|
28
|
+
volumes?: Volume[];
|
|
29
|
+
script?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface BuiltImage {
|
|
32
|
+
name: string;
|
|
33
|
+
digest: string;
|
|
34
|
+
pushTiming?: TimeSpan;
|
|
35
|
+
}
|
|
36
|
+
export interface BuildResults {
|
|
37
|
+
images?: BuiltImage[];
|
|
38
|
+
buildStepImages?: string[];
|
|
39
|
+
artifactManifest?: string;
|
|
40
|
+
numArtifacts?: number;
|
|
41
|
+
buildStepOutputs?: Buffer[];
|
|
42
|
+
artifactTiming?: TimeSpan;
|
|
43
|
+
}
|
|
44
|
+
export interface StorageSource {
|
|
45
|
+
bucket: string;
|
|
46
|
+
object: string;
|
|
47
|
+
generation?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface RepoSource {
|
|
50
|
+
projectId?: string;
|
|
51
|
+
repoName: string;
|
|
52
|
+
branchName?: string;
|
|
53
|
+
tagName?: string;
|
|
54
|
+
commitSha?: string;
|
|
55
|
+
dir?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface GitSource {
|
|
58
|
+
url: string;
|
|
59
|
+
revision?: string;
|
|
60
|
+
dir?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface BuildSource {
|
|
63
|
+
storageSource?: StorageSource;
|
|
64
|
+
repoSource?: RepoSource;
|
|
65
|
+
gitSource?: GitSource;
|
|
66
|
+
}
|
|
67
|
+
export interface BuildStepConfig {
|
|
68
|
+
name: string;
|
|
69
|
+
entrypoint?: string;
|
|
70
|
+
args?: string[];
|
|
71
|
+
dir?: string;
|
|
72
|
+
env?: string[];
|
|
73
|
+
secretEnv?: string[];
|
|
74
|
+
waitFor?: string[];
|
|
75
|
+
timeout?: string;
|
|
76
|
+
volumes?: Volume[];
|
|
77
|
+
script?: string;
|
|
78
|
+
}
|
|
79
|
+
export interface ArtifactsConfig {
|
|
80
|
+
images?: string[];
|
|
81
|
+
objects?: {
|
|
82
|
+
location: string;
|
|
83
|
+
paths: string[];
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export interface BuildConfig {
|
|
87
|
+
steps: BuildStepConfig[];
|
|
88
|
+
source?: BuildSource;
|
|
89
|
+
timeout?: string;
|
|
90
|
+
machineType?: MachineType;
|
|
91
|
+
diskSizeGb?: number;
|
|
92
|
+
substitutions?: Record<string, string>;
|
|
93
|
+
tags?: string[];
|
|
94
|
+
serviceAccount?: string;
|
|
95
|
+
logsBucket?: string;
|
|
96
|
+
artifacts?: ArtifactsConfig;
|
|
97
|
+
}
|
|
98
|
+
export interface Build {
|
|
99
|
+
id: string;
|
|
100
|
+
projectId: string;
|
|
101
|
+
status: BuildStatus;
|
|
102
|
+
statusDetail?: string;
|
|
103
|
+
source?: BuildSource;
|
|
104
|
+
steps: BuildStep[];
|
|
105
|
+
results?: BuildResults;
|
|
106
|
+
createTime: Date;
|
|
107
|
+
startTime?: Date;
|
|
108
|
+
finishTime?: Date;
|
|
109
|
+
duration?: number;
|
|
110
|
+
timeout?: string;
|
|
111
|
+
logUrl?: string;
|
|
112
|
+
logsBucket?: string;
|
|
113
|
+
buildTriggerId?: string;
|
|
114
|
+
substitutions?: Record<string, string>;
|
|
115
|
+
tags?: string[];
|
|
116
|
+
serviceAccount?: string;
|
|
117
|
+
}
|
|
118
|
+
export interface BuildFilter {
|
|
119
|
+
status?: BuildStatus | BuildStatus[];
|
|
120
|
+
triggerId?: string;
|
|
121
|
+
startTime?: {
|
|
122
|
+
after?: Date;
|
|
123
|
+
before?: Date;
|
|
124
|
+
};
|
|
125
|
+
tags?: string[];
|
|
126
|
+
pageSize?: number;
|
|
127
|
+
pageToken?: string;
|
|
128
|
+
}
|
|
129
|
+
export interface PaginatedResult<T> {
|
|
130
|
+
items: T[];
|
|
131
|
+
nextPageToken?: string;
|
|
132
|
+
totalSize?: number;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=builds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builds.d.ts","sourceRoot":"","sources":["../../src/types/builds.ts"],"names":[],"mappings":"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"}
|