@teambit/ripple 0.0.0-fe2dbd4f0d4ec21100d4de95313aa4e5215a3a08 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ripple.cmd.d.ts +156 -0
- package/dist/ripple.cmd.js +531 -1
- package/dist/ripple.cmd.js.map +1 -1
- package/dist/ripple.main.runtime.js +1 -36
- package/dist/ripple.main.runtime.js.map +1 -1
- package/package.json +9 -8
- package/dist/ripple-errors.cmd.d.ts +0 -35
- package/dist/ripple-errors.cmd.js +0 -183
- package/dist/ripple-errors.cmd.js.map +0 -1
- package/dist/ripple-list.cmd.d.ts +0 -33
- package/dist/ripple-list.cmd.js +0 -165
- package/dist/ripple-list.cmd.js.map +0 -1
- package/dist/ripple-log.cmd.d.ts +0 -41
- package/dist/ripple-log.cmd.js +0 -164
- package/dist/ripple-log.cmd.js.map +0 -1
- package/dist/ripple-retry.cmd.d.ts +0 -28
- package/dist/ripple-retry.cmd.js +0 -73
- package/dist/ripple-retry.cmd.js.map +0 -1
- package/dist/ripple-stop.cmd.d.ts +0 -28
- package/dist/ripple-stop.cmd.js +0 -67
- package/dist/ripple-stop.cmd.js.map +0 -1
- /package/dist/{preview-1774903676076.js → preview-1774991821432.js} +0 -0
|
@@ -67,41 +67,6 @@ function _ripple2() {
|
|
|
67
67
|
};
|
|
68
68
|
return data;
|
|
69
69
|
}
|
|
70
|
-
function _rippleList() {
|
|
71
|
-
const data = require("./ripple-list.cmd");
|
|
72
|
-
_rippleList = function () {
|
|
73
|
-
return data;
|
|
74
|
-
};
|
|
75
|
-
return data;
|
|
76
|
-
}
|
|
77
|
-
function _rippleLog() {
|
|
78
|
-
const data = require("./ripple-log.cmd");
|
|
79
|
-
_rippleLog = function () {
|
|
80
|
-
return data;
|
|
81
|
-
};
|
|
82
|
-
return data;
|
|
83
|
-
}
|
|
84
|
-
function _rippleErrors() {
|
|
85
|
-
const data = require("./ripple-errors.cmd");
|
|
86
|
-
_rippleErrors = function () {
|
|
87
|
-
return data;
|
|
88
|
-
};
|
|
89
|
-
return data;
|
|
90
|
-
}
|
|
91
|
-
function _rippleRetry() {
|
|
92
|
-
const data = require("./ripple-retry.cmd");
|
|
93
|
-
_rippleRetry = function () {
|
|
94
|
-
return data;
|
|
95
|
-
};
|
|
96
|
-
return data;
|
|
97
|
-
}
|
|
98
|
-
function _rippleStop() {
|
|
99
|
-
const data = require("./ripple-stop.cmd");
|
|
100
|
-
_rippleStop = function () {
|
|
101
|
-
return data;
|
|
102
|
-
};
|
|
103
|
-
return data;
|
|
104
|
-
}
|
|
105
70
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
106
71
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
107
72
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -360,7 +325,7 @@ class RippleMain {
|
|
|
360
325
|
const logger = loggerAspect.createLogger(_ripple().RippleAspect.id);
|
|
361
326
|
const ripple = new RippleMain(cloud, logger, workspace);
|
|
362
327
|
const rippleCmd = new (_ripple2().RippleCmd)();
|
|
363
|
-
rippleCmd.commands = [new (
|
|
328
|
+
rippleCmd.commands = [new (_ripple2().RippleListCmd)(ripple), new (_ripple2().RippleLogCmd)(ripple), new (_ripple2().RippleErrorsCmd)(ripple), new (_ripple2().RippleRetryCmd)(ripple), new (_ripple2().RippleStopCmd)(ripple)];
|
|
364
329
|
cli.register(rippleCmd);
|
|
365
330
|
return ripple;
|
|
366
331
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cli","data","require","_logger","_cloud","_workspace","_legacy","_rippleUtils","_stripAnsi","_interopRequireDefault","_ripple","_ripple2","_rippleList","_rippleLog","_rippleErrors","_rippleRetry","_rippleStop","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","RippleMain","constructor","cloud","logger","workspace","ensureAuthenticated","getAuthToken","Error","fetchRippleGQL","query","variables","graphqlUrl","getCloudApi","body","JSON","stringify","headers","getAuthHeader","response","fetch","method","ok","text","catch","status","json","errors","messages","map","message","join","listJobs","opts","LIST_JOBS","filters","limit","offset","getJob","jobId","GET_JOB","getCiGraphNodes","job","ciGraph","graph","parse","nodes","node","attr","ids","id","stripComponentVersion","componentIds","containerName","name","phase","getComponentBuildSummary","componentId","GET_COMPONENT_BUILD_SUMMARY","getContainerLog","url","Accept","controller","AbortController","hardTimeout","setTimeout","abort","idleTimer","signal","clearTimeout","reader","getReader","decoder","TextDecoder","buffer","resetIdle","done","read","decode","stream","lines","split","pop","line","startsWith","parsed","substring","err","warn","getContainerLogs","containerNames","results","Promise","allSettled","log","logMap","Map","result","set","extractErrorsFromLog","patterns","pattern","idx","findIndex","m","stripAnsi","includes","slice","retryJob","RETRY_JOB","stopJob","STOP_JOB","getCurrentLaneId","undefined","laneId","isDefault","toString","findLatestJobForLane","lanes","jobs","getDefaultOwner","defaultScope","getJobUrl","scope","laneParts","laneName","getCloudDomain","provider","cli","loggerAspect","createLogger","RippleAspect","ripple","rippleCmd","RippleCmd","commands","RippleListCmd","RippleLogCmd","RippleErrorsCmd","RippleRetryCmd","RippleStopCmd","register","exports","MainRuntime","CLIAspect","CloudAspect","LoggerAspect","WorkspaceAspect","addRuntime"],"sources":["ripple.main.runtime.ts"],"sourcesContent":["import type { RuntimeDefinition } from '@teambit/harmony';\nimport { CLIAspect, type CLIMain, MainRuntime } from '@teambit/cli';\nimport { LoggerAspect, type LoggerMain, type Logger } from '@teambit/logger';\nimport { CloudAspect, type CloudMain } from '@teambit/cloud';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport { getCloudDomain } from '@teambit/legacy.constants';\nimport { stripComponentVersion } from './ripple-utils';\nimport stripAnsi from 'strip-ansi';\nimport { RippleAspect } from './ripple.aspect';\nimport { RippleCmd } from './ripple.cmd';\nimport { RippleListCmd } from './ripple-list.cmd';\nimport { RippleLogCmd } from './ripple-log.cmd';\nimport { RippleErrorsCmd } from './ripple-errors.cmd';\nimport { RippleRetryCmd } from './ripple-retry.cmd';\nimport { RippleStopCmd } from './ripple-stop.cmd';\n\nexport type JobStatus = {\n startedAt?: string;\n finishedAt?: string;\n phase?: string;\n};\n\nexport type RippleJob = {\n id: string;\n name?: string;\n laneId?: string;\n simulation?: boolean;\n user?: { username?: string; displayName?: string };\n status?: JobStatus;\n};\n\nexport type BuildTaskStatus = {\n status?: string;\n warnings?: number;\n};\n\nexport type BuildTaskSummary = {\n name?: string;\n description?: string;\n startTime?: string;\n status?: BuildTaskStatus;\n};\n\nexport type ComponentBuildSummary = {\n id?: string;\n name?: string;\n tasks?: BuildTaskSummary[];\n};\n\nexport type CiGraphNode = {\n componentIds: string[];\n containerName: string;\n phase: string;\n};\n\nexport class RippleMain {\n static runtime: RuntimeDefinition = MainRuntime;\n static dependencies = [CLIAspect, CloudAspect, LoggerAspect, WorkspaceAspect];\n\n constructor(\n private cloud: CloudMain,\n private logger: Logger,\n private workspace?: Workspace\n ) {}\n\n private static LIST_JOBS = `\n query listJobs($filters: FilterOptions, $limit: Int, $offset: Int) {\n listJobs(filters: $filters, limit: $limit, offset: $offset) {\n id\n name\n laneId\n simulation\n user { username displayName }\n status { startedAt finishedAt phase }\n }\n }\n `;\n\n private static GET_JOB = `\n query getJob($jobId: ID!) {\n getJob(jobId: $jobId) {\n id\n name\n laneId\n hash\n simulation\n user { username displayName }\n status { startedAt finishedAt phase }\n ciGraph\n ciComponentGraph\n }\n }\n `;\n\n private static GET_COMPONENT_BUILD_SUMMARY = `\n query getComponentBuildSummary($jobId: ID!, $componentId: String!) {\n getComponentBuildSummary(jobId: $jobId, componentId: $componentId) {\n id\n name\n tasks {\n name\n description\n startTime\n status { status warnings }\n }\n }\n }\n `;\n\n private static RETRY_JOB = `\n mutation retryJob($jobId: ID!) {\n retryJob(jobId: $jobId) {\n id\n name\n laneId\n status { startedAt finishedAt phase }\n }\n }\n `;\n\n private static STOP_JOB = `\n mutation stopJob($jobId: ID!) {\n stopJob(jobId: $jobId) {\n id\n name\n laneId\n status { startedAt finishedAt phase }\n }\n }\n `;\n\n private ensureAuthenticated(): void {\n if (!this.cloud.getAuthToken()) {\n throw new Error('You are not logged in. Please run \"bit login\" first.');\n }\n }\n\n private async fetchRippleGQL<T>(query: string, variables?: Record<string, any>): Promise<T | null> {\n this.ensureAuthenticated();\n const graphqlUrl = `${this.cloud.getCloudApi()}/graphql`;\n const body = JSON.stringify({ query, variables });\n const headers = {\n 'Content-Type': 'application/json',\n ...this.cloud.getAuthHeader(),\n };\n const response = await fetch(graphqlUrl, { method: 'POST', headers, body });\n if (!response.ok) {\n const text = await response.text().catch(() => '');\n throw new Error(`Ripple CI API returned HTTP ${response.status}: ${text}`);\n }\n const json = (await response.json()) as { data?: T; errors?: Array<{ message: string }> };\n if (json.errors?.length) {\n const messages = json.errors.map((e) => e.message).join(', ');\n throw new Error(`Ripple CI API error: ${messages}`);\n }\n return json.data ?? null;\n }\n\n async listJobs(opts: {\n limit?: number;\n offset?: number;\n filters?: { lanes?: string[]; owners?: string[]; scopes?: string[]; status?: string };\n }): Promise<RippleJob[]> {\n const data = await this.fetchRippleGQL<{ listJobs: RippleJob[] }>(RippleMain.LIST_JOBS, {\n filters: opts.filters,\n limit: opts.limit ?? 20,\n offset: opts.offset,\n });\n return data?.listJobs ?? [];\n }\n\n async getJob(\n jobId: string\n ): Promise<(RippleJob & { hash?: string; ciGraph?: string; ciComponentGraph?: string }) | null> {\n const data = await this.fetchRippleGQL<{\n getJob: RippleJob & { hash?: string; ciGraph?: string; ciComponentGraph?: string };\n }>(RippleMain.GET_JOB, { jobId });\n return data?.getJob ?? null;\n }\n\n /**\n * parse a job's ciGraph (internal graph) to extract per-node build status.\n * ciGraph has the job-specific build results (unlike ciComponentGraph which is static).\n * each node represents a build container that builds one or more components.\n */\n getCiGraphNodes(job: { ciGraph?: string }): CiGraphNode[] {\n if (!job.ciGraph) return [];\n try {\n const graph = JSON.parse(job.ciGraph) as { nodes?: Array<{ id: string; attr: string | Record<string, any> }> };\n if (!graph.nodes) return [];\n return graph.nodes.map((node) => {\n const attr = typeof node.attr === 'string' ? JSON.parse(node.attr) : node.attr;\n const ids: string[] = (attr.ids || []).map((id: string) => stripComponentVersion(id));\n return {\n componentIds: ids,\n containerName: attr.status?.name || node.id,\n phase: attr.status?.phase || 'UNKNOWN',\n };\n });\n } catch {\n return [];\n }\n }\n\n async getComponentBuildSummary(jobId: string, componentId: string): Promise<ComponentBuildSummary | null> {\n const data = await this.fetchRippleGQL<{ getComponentBuildSummary: ComponentBuildSummary }>(\n RippleMain.GET_COMPONENT_BUILD_SUMMARY,\n { jobId, componentId }\n );\n return data?.getComponentBuildSummary ?? null;\n }\n\n /**\n * fetch build logs for a specific container in a job via the REST SSE endpoint.\n * uses an idle timeout to detect end-of-stream (SSE connections may not close).\n */\n async getContainerLog(jobId: string, containerName: string): Promise<string[]> {\n this.ensureAuthenticated();\n const url = `${this.cloud.getCloudApi()}/ripple-ci/api/job/log/${jobId}/${containerName}`;\n const headers = {\n Accept: 'text/event-stream',\n ...this.cloud.getAuthHeader(),\n };\n const controller = new AbortController();\n // hard cap to avoid hanging forever\n const hardTimeout = setTimeout(() => controller.abort(), 30_000);\n const messages: string[] = [];\n let idleTimer: ReturnType<typeof setTimeout> | undefined;\n try {\n const response = await fetch(url, { headers, signal: controller.signal });\n if (!response.ok || !response.body) {\n clearTimeout(hardTimeout);\n return [];\n }\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n const resetIdle = () => {\n if (idleTimer) clearTimeout(idleTimer);\n idleTimer = setTimeout(() => controller.abort(), 3_000);\n };\n resetIdle();\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // eslint-disable-next-line no-await-in-loop\n const { done, value } = await reader.read();\n if (done) break;\n resetIdle();\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n for (const line of lines) {\n if (!line.startsWith('data: ')) continue;\n try {\n const parsed = JSON.parse(line.substring(6)) as { message?: string };\n if (parsed.message != null) messages.push(parsed.message);\n } catch {\n // skip malformed lines\n }\n }\n }\n } catch (err: any) {\n if (err?.name !== 'AbortError') {\n this.logger.warn(`Failed to fetch container log: ${err?.message}`);\n }\n } finally {\n if (idleTimer) clearTimeout(idleTimer);\n clearTimeout(hardTimeout);\n }\n return messages;\n }\n\n /**\n * fetch build logs for multiple containers in parallel.\n */\n async getContainerLogs(jobId: string, containerNames: string[]): Promise<Map<string, string[]>> {\n const results = await Promise.allSettled(\n containerNames.map(async (name) => {\n const log = await this.getContainerLog(jobId, name);\n return { name, log };\n })\n );\n const logMap = new Map<string, string[]>();\n for (const result of results) {\n if (result.status === 'fulfilled') {\n logMap.set(result.value.name, result.value.log);\n }\n }\n return logMap;\n }\n\n /**\n * extract the error section from container log messages.\n * looks for common error patterns in the build output.\n */\n extractErrorsFromLog(messages: string[]): string[] {\n const patterns = ['errors were found', 'Failed task', 'threw an error', 'Error:', 'FAIL'];\n for (const pattern of patterns) {\n const idx = messages.findIndex((m) => stripAnsi(m).includes(pattern));\n if (idx >= 0) {\n return messages.slice(idx);\n }\n }\n // last resort: grab the last 30 lines if the log has content\n if (messages.length > 0) {\n return messages.slice(-30);\n }\n return [];\n }\n\n async retryJob(jobId: string): Promise<RippleJob | null> {\n const data = await this.fetchRippleGQL<{ retryJob: RippleJob }>(RippleMain.RETRY_JOB, { jobId });\n return data?.retryJob ?? null;\n }\n\n async stopJob(jobId: string): Promise<RippleJob | null> {\n const data = await this.fetchRippleGQL<{ stopJob: RippleJob }>(RippleMain.STOP_JOB, { jobId });\n return data?.stopJob ?? null;\n }\n\n /**\n * detect the current lane from the workspace.\n * returns the laneId in \"scope/lane-name\" format, or undefined if not on a lane.\n */\n getCurrentLaneId(): string | undefined {\n if (!this.workspace) return undefined;\n const laneId = this.workspace.getCurrentLaneId();\n if (!laneId || laneId.isDefault()) return undefined;\n return laneId.toString();\n }\n\n /**\n * find the latest job for a given laneId, optionally filtered by status phase.\n */\n async findLatestJobForLane(laneId: string, phase?: string): Promise<RippleJob | null> {\n const filters: { lanes: string[]; status?: string } = { lanes: [laneId] };\n if (phase) {\n filters.status = phase;\n }\n const jobs = await this.listJobs({ filters, limit: 1 });\n return jobs[0] ?? null;\n }\n\n /**\n * detect the workspace owner from the workspace defaultScope.\n */\n getDefaultOwner(): string | undefined {\n const defaultScope = this.workspace?.defaultScope;\n if (!defaultScope?.includes('.')) return undefined;\n return defaultScope.split('.')[0];\n }\n\n getJobUrl(job: RippleJob): string {\n if (job.laneId) {\n // laneId format: \"scope/lane-name\", e.g. \"att-bit.duc/my-lane\"\n const [scope, ...laneParts] = job.laneId.split('/');\n const laneName = laneParts.join('/');\n if (scope && laneName) {\n return `https://${getCloudDomain()}/${scope.split('.').join('/')}/~lane/${laneName}/~ripple-ci/job/${job.id}`;\n }\n }\n return `https://${getCloudDomain()}/ripple-ci/job/${job.id}`;\n }\n\n static async provider([cli, cloud, loggerAspect, workspace]: [CLIMain, CloudMain, LoggerMain, Workspace]) {\n const logger = loggerAspect.createLogger(RippleAspect.id);\n const ripple = new RippleMain(cloud, logger, workspace);\n\n const rippleCmd = new RippleCmd();\n rippleCmd.commands = [\n new RippleListCmd(ripple),\n new RippleLogCmd(ripple),\n new RippleErrorsCmd(ripple),\n new RippleRetryCmd(ripple),\n new RippleStopCmd(ripple),\n ];\n cli.register(rippleCmd);\n\n return ripple;\n }\n}\n\nRippleAspect.addRuntime(RippleMain);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_cli","data","require","_logger","_cloud","_workspace","_legacy","_rippleUtils","_stripAnsi","_interopRequireDefault","_ripple","_ripple2","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","RippleMain","constructor","cloud","logger","workspace","ensureAuthenticated","getAuthToken","Error","fetchRippleGQL","query","variables","graphqlUrl","getCloudApi","body","JSON","stringify","headers","getAuthHeader","response","fetch","method","ok","text","catch","status","json","errors","messages","map","message","join","listJobs","opts","LIST_JOBS","filters","limit","offset","getJob","jobId","GET_JOB","getCiGraphNodes","job","ciGraph","graph","parse","nodes","node","attr","ids","id","stripComponentVersion","componentIds","containerName","name","phase","getComponentBuildSummary","componentId","GET_COMPONENT_BUILD_SUMMARY","getContainerLog","url","Accept","controller","AbortController","hardTimeout","setTimeout","abort","idleTimer","signal","clearTimeout","reader","getReader","decoder","TextDecoder","buffer","resetIdle","done","read","decode","stream","lines","split","pop","line","startsWith","parsed","substring","err","warn","getContainerLogs","containerNames","results","Promise","allSettled","log","logMap","Map","result","set","extractErrorsFromLog","patterns","pattern","idx","findIndex","m","stripAnsi","includes","slice","retryJob","RETRY_JOB","stopJob","STOP_JOB","getCurrentLaneId","undefined","laneId","isDefault","toString","findLatestJobForLane","lanes","jobs","getDefaultOwner","defaultScope","getJobUrl","scope","laneParts","laneName","getCloudDomain","provider","cli","loggerAspect","createLogger","RippleAspect","ripple","rippleCmd","RippleCmd","commands","RippleListCmd","RippleLogCmd","RippleErrorsCmd","RippleRetryCmd","RippleStopCmd","register","exports","MainRuntime","CLIAspect","CloudAspect","LoggerAspect","WorkspaceAspect","addRuntime"],"sources":["ripple.main.runtime.ts"],"sourcesContent":["import type { RuntimeDefinition } from '@teambit/harmony';\nimport { CLIAspect, type CLIMain, MainRuntime } from '@teambit/cli';\nimport { LoggerAspect, type LoggerMain, type Logger } from '@teambit/logger';\nimport { CloudAspect, type CloudMain } from '@teambit/cloud';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport { getCloudDomain } from '@teambit/legacy.constants';\nimport { stripComponentVersion } from './ripple-utils';\nimport stripAnsi from 'strip-ansi';\nimport { RippleAspect } from './ripple.aspect';\nimport { RippleCmd, RippleListCmd, RippleLogCmd, RippleErrorsCmd, RippleRetryCmd, RippleStopCmd } from './ripple.cmd';\n\nexport type JobStatus = {\n startedAt?: string;\n finishedAt?: string;\n phase?: string;\n};\n\nexport type RippleJob = {\n id: string;\n name?: string;\n laneId?: string;\n simulation?: boolean;\n user?: { username?: string; displayName?: string };\n status?: JobStatus;\n};\n\nexport type BuildTaskStatus = {\n status?: string;\n warnings?: number;\n};\n\nexport type BuildTaskSummary = {\n name?: string;\n description?: string;\n startTime?: string;\n status?: BuildTaskStatus;\n};\n\nexport type ComponentBuildSummary = {\n id?: string;\n name?: string;\n tasks?: BuildTaskSummary[];\n};\n\nexport type CiGraphNode = {\n componentIds: string[];\n containerName: string;\n phase: string;\n};\n\nexport class RippleMain {\n static runtime: RuntimeDefinition = MainRuntime;\n static dependencies = [CLIAspect, CloudAspect, LoggerAspect, WorkspaceAspect];\n\n constructor(\n private cloud: CloudMain,\n private logger: Logger,\n private workspace?: Workspace\n ) {}\n\n private static LIST_JOBS = `\n query listJobs($filters: FilterOptions, $limit: Int, $offset: Int) {\n listJobs(filters: $filters, limit: $limit, offset: $offset) {\n id\n name\n laneId\n simulation\n user { username displayName }\n status { startedAt finishedAt phase }\n }\n }\n `;\n\n private static GET_JOB = `\n query getJob($jobId: ID!) {\n getJob(jobId: $jobId) {\n id\n name\n laneId\n hash\n simulation\n user { username displayName }\n status { startedAt finishedAt phase }\n ciGraph\n ciComponentGraph\n }\n }\n `;\n\n private static GET_COMPONENT_BUILD_SUMMARY = `\n query getComponentBuildSummary($jobId: ID!, $componentId: String!) {\n getComponentBuildSummary(jobId: $jobId, componentId: $componentId) {\n id\n name\n tasks {\n name\n description\n startTime\n status { status warnings }\n }\n }\n }\n `;\n\n private static RETRY_JOB = `\n mutation retryJob($jobId: ID!) {\n retryJob(jobId: $jobId) {\n id\n name\n laneId\n status { startedAt finishedAt phase }\n }\n }\n `;\n\n private static STOP_JOB = `\n mutation stopJob($jobId: ID!) {\n stopJob(jobId: $jobId) {\n id\n name\n laneId\n status { startedAt finishedAt phase }\n }\n }\n `;\n\n private ensureAuthenticated(): void {\n if (!this.cloud.getAuthToken()) {\n throw new Error('You are not logged in. Please run \"bit login\" first.');\n }\n }\n\n private async fetchRippleGQL<T>(query: string, variables?: Record<string, any>): Promise<T | null> {\n this.ensureAuthenticated();\n const graphqlUrl = `${this.cloud.getCloudApi()}/graphql`;\n const body = JSON.stringify({ query, variables });\n const headers = {\n 'Content-Type': 'application/json',\n ...this.cloud.getAuthHeader(),\n };\n const response = await fetch(graphqlUrl, { method: 'POST', headers, body });\n if (!response.ok) {\n const text = await response.text().catch(() => '');\n throw new Error(`Ripple CI API returned HTTP ${response.status}: ${text}`);\n }\n const json = (await response.json()) as { data?: T; errors?: Array<{ message: string }> };\n if (json.errors?.length) {\n const messages = json.errors.map((e) => e.message).join(', ');\n throw new Error(`Ripple CI API error: ${messages}`);\n }\n return json.data ?? null;\n }\n\n async listJobs(opts: {\n limit?: number;\n offset?: number;\n filters?: { lanes?: string[]; owners?: string[]; scopes?: string[]; status?: string };\n }): Promise<RippleJob[]> {\n const data = await this.fetchRippleGQL<{ listJobs: RippleJob[] }>(RippleMain.LIST_JOBS, {\n filters: opts.filters,\n limit: opts.limit ?? 20,\n offset: opts.offset,\n });\n return data?.listJobs ?? [];\n }\n\n async getJob(\n jobId: string\n ): Promise<(RippleJob & { hash?: string; ciGraph?: string; ciComponentGraph?: string }) | null> {\n const data = await this.fetchRippleGQL<{\n getJob: RippleJob & { hash?: string; ciGraph?: string; ciComponentGraph?: string };\n }>(RippleMain.GET_JOB, { jobId });\n return data?.getJob ?? null;\n }\n\n /**\n * parse a job's ciGraph (internal graph) to extract per-node build status.\n * ciGraph has the job-specific build results (unlike ciComponentGraph which is static).\n * each node represents a build container that builds one or more components.\n */\n getCiGraphNodes(job: { ciGraph?: string }): CiGraphNode[] {\n if (!job.ciGraph) return [];\n try {\n const graph = JSON.parse(job.ciGraph) as { nodes?: Array<{ id: string; attr: string | Record<string, any> }> };\n if (!graph.nodes) return [];\n return graph.nodes.map((node) => {\n const attr = typeof node.attr === 'string' ? JSON.parse(node.attr) : node.attr;\n const ids: string[] = (attr.ids || []).map((id: string) => stripComponentVersion(id));\n return {\n componentIds: ids,\n containerName: attr.status?.name || node.id,\n phase: attr.status?.phase || 'UNKNOWN',\n };\n });\n } catch {\n return [];\n }\n }\n\n async getComponentBuildSummary(jobId: string, componentId: string): Promise<ComponentBuildSummary | null> {\n const data = await this.fetchRippleGQL<{ getComponentBuildSummary: ComponentBuildSummary }>(\n RippleMain.GET_COMPONENT_BUILD_SUMMARY,\n { jobId, componentId }\n );\n return data?.getComponentBuildSummary ?? null;\n }\n\n /**\n * fetch build logs for a specific container in a job via the REST SSE endpoint.\n * uses an idle timeout to detect end-of-stream (SSE connections may not close).\n */\n async getContainerLog(jobId: string, containerName: string): Promise<string[]> {\n this.ensureAuthenticated();\n const url = `${this.cloud.getCloudApi()}/ripple-ci/api/job/log/${jobId}/${containerName}`;\n const headers = {\n Accept: 'text/event-stream',\n ...this.cloud.getAuthHeader(),\n };\n const controller = new AbortController();\n // hard cap to avoid hanging forever\n const hardTimeout = setTimeout(() => controller.abort(), 30_000);\n const messages: string[] = [];\n let idleTimer: ReturnType<typeof setTimeout> | undefined;\n try {\n const response = await fetch(url, { headers, signal: controller.signal });\n if (!response.ok || !response.body) {\n clearTimeout(hardTimeout);\n return [];\n }\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n const resetIdle = () => {\n if (idleTimer) clearTimeout(idleTimer);\n idleTimer = setTimeout(() => controller.abort(), 3_000);\n };\n resetIdle();\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // eslint-disable-next-line no-await-in-loop\n const { done, value } = await reader.read();\n if (done) break;\n resetIdle();\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n for (const line of lines) {\n if (!line.startsWith('data: ')) continue;\n try {\n const parsed = JSON.parse(line.substring(6)) as { message?: string };\n if (parsed.message != null) messages.push(parsed.message);\n } catch {\n // skip malformed lines\n }\n }\n }\n } catch (err: any) {\n if (err?.name !== 'AbortError') {\n this.logger.warn(`Failed to fetch container log: ${err?.message}`);\n }\n } finally {\n if (idleTimer) clearTimeout(idleTimer);\n clearTimeout(hardTimeout);\n }\n return messages;\n }\n\n /**\n * fetch build logs for multiple containers in parallel.\n */\n async getContainerLogs(jobId: string, containerNames: string[]): Promise<Map<string, string[]>> {\n const results = await Promise.allSettled(\n containerNames.map(async (name) => {\n const log = await this.getContainerLog(jobId, name);\n return { name, log };\n })\n );\n const logMap = new Map<string, string[]>();\n for (const result of results) {\n if (result.status === 'fulfilled') {\n logMap.set(result.value.name, result.value.log);\n }\n }\n return logMap;\n }\n\n /**\n * extract the error section from container log messages.\n * looks for common error patterns in the build output.\n */\n extractErrorsFromLog(messages: string[]): string[] {\n const patterns = ['errors were found', 'Failed task', 'threw an error', 'Error:', 'FAIL'];\n for (const pattern of patterns) {\n const idx = messages.findIndex((m) => stripAnsi(m).includes(pattern));\n if (idx >= 0) {\n return messages.slice(idx);\n }\n }\n // last resort: grab the last 30 lines if the log has content\n if (messages.length > 0) {\n return messages.slice(-30);\n }\n return [];\n }\n\n async retryJob(jobId: string): Promise<RippleJob | null> {\n const data = await this.fetchRippleGQL<{ retryJob: RippleJob }>(RippleMain.RETRY_JOB, { jobId });\n return data?.retryJob ?? null;\n }\n\n async stopJob(jobId: string): Promise<RippleJob | null> {\n const data = await this.fetchRippleGQL<{ stopJob: RippleJob }>(RippleMain.STOP_JOB, { jobId });\n return data?.stopJob ?? null;\n }\n\n /**\n * detect the current lane from the workspace.\n * returns the laneId in \"scope/lane-name\" format, or undefined if not on a lane.\n */\n getCurrentLaneId(): string | undefined {\n if (!this.workspace) return undefined;\n const laneId = this.workspace.getCurrentLaneId();\n if (!laneId || laneId.isDefault()) return undefined;\n return laneId.toString();\n }\n\n /**\n * find the latest job for a given laneId, optionally filtered by status phase.\n */\n async findLatestJobForLane(laneId: string, phase?: string): Promise<RippleJob | null> {\n const filters: { lanes: string[]; status?: string } = { lanes: [laneId] };\n if (phase) {\n filters.status = phase;\n }\n const jobs = await this.listJobs({ filters, limit: 1 });\n return jobs[0] ?? null;\n }\n\n /**\n * detect the workspace owner from the workspace defaultScope.\n */\n getDefaultOwner(): string | undefined {\n const defaultScope = this.workspace?.defaultScope;\n if (!defaultScope?.includes('.')) return undefined;\n return defaultScope.split('.')[0];\n }\n\n getJobUrl(job: RippleJob): string {\n if (job.laneId) {\n // laneId format: \"scope/lane-name\", e.g. \"att-bit.duc/my-lane\"\n const [scope, ...laneParts] = job.laneId.split('/');\n const laneName = laneParts.join('/');\n if (scope && laneName) {\n return `https://${getCloudDomain()}/${scope.split('.').join('/')}/~lane/${laneName}/~ripple-ci/job/${job.id}`;\n }\n }\n return `https://${getCloudDomain()}/ripple-ci/job/${job.id}`;\n }\n\n static async provider([cli, cloud, loggerAspect, workspace]: [CLIMain, CloudMain, LoggerMain, Workspace]) {\n const logger = loggerAspect.createLogger(RippleAspect.id);\n const ripple = new RippleMain(cloud, logger, workspace);\n\n const rippleCmd = new RippleCmd();\n rippleCmd.commands = [\n new RippleListCmd(ripple),\n new RippleLogCmd(ripple),\n new RippleErrorsCmd(ripple),\n new RippleRetryCmd(ripple),\n new RippleStopCmd(ripple),\n ];\n cli.register(rippleCmd);\n\n return ripple;\n }\n}\n\nRippleAspect.addRuntime(RippleMain);\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/ripple",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"homepage": "https://bit.cloud/teambit/cloud/ripple",
|
|
4
5
|
"main": "dist/index.js",
|
|
5
6
|
"componentId": {
|
|
7
|
+
"scope": "teambit.cloud",
|
|
6
8
|
"name": "ripple",
|
|
7
|
-
"version": "
|
|
8
|
-
"scope": "teambit.cloud"
|
|
9
|
+
"version": "0.0.2"
|
|
9
10
|
},
|
|
10
11
|
"dependencies": {
|
|
11
12
|
"chalk": "4.1.2",
|
|
12
|
-
"cli-table": "0.3.6",
|
|
13
13
|
"strip-ansi": "6.0.0",
|
|
14
|
-
"
|
|
14
|
+
"cli-table": "0.3.6",
|
|
15
15
|
"@teambit/harmony": "0.4.7",
|
|
16
16
|
"@teambit/legacy.constants": "0.0.24",
|
|
17
|
-
"@teambit/
|
|
18
|
-
"@teambit/cloud": "0.0.
|
|
19
|
-
"@teambit/
|
|
17
|
+
"@teambit/cli": "0.0.1307",
|
|
18
|
+
"@teambit/cloud": "0.0.1216",
|
|
19
|
+
"@teambit/logger": "0.0.1400",
|
|
20
|
+
"@teambit/workspace": "1.0.926"
|
|
20
21
|
},
|
|
21
22
|
"devDependencies": {
|
|
22
23
|
"@types/cli-table": "^0.3.0",
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { Command, CommandOptions } from '@teambit/cli';
|
|
2
|
-
import type { RippleMain, CiGraphNode } from './ripple.main.runtime';
|
|
3
|
-
export declare class RippleErrorsCmd implements Command {
|
|
4
|
-
private ripple;
|
|
5
|
-
name: string;
|
|
6
|
-
description: string;
|
|
7
|
-
skipWorkspace: boolean;
|
|
8
|
-
remoteOp: boolean;
|
|
9
|
-
alias: string;
|
|
10
|
-
options: CommandOptions;
|
|
11
|
-
arguments: {
|
|
12
|
-
name: string;
|
|
13
|
-
description: string;
|
|
14
|
-
}[];
|
|
15
|
-
constructor(ripple: RippleMain);
|
|
16
|
-
report([jobId]: [string], flags: {
|
|
17
|
-
lane?: string;
|
|
18
|
-
log?: boolean;
|
|
19
|
-
}): Promise<string>;
|
|
20
|
-
json([jobId]: [string], flags: {
|
|
21
|
-
lane?: string;
|
|
22
|
-
log?: boolean;
|
|
23
|
-
}): Promise<{
|
|
24
|
-
error: string;
|
|
25
|
-
job: null;
|
|
26
|
-
ciNodes: never[];
|
|
27
|
-
containerLogs: {};
|
|
28
|
-
} | {
|
|
29
|
-
job: any;
|
|
30
|
-
ciNodes: CiGraphNode[];
|
|
31
|
-
containerLogs: Record<string, string[]>;
|
|
32
|
-
error?: undefined;
|
|
33
|
-
}>;
|
|
34
|
-
private getErrors;
|
|
35
|
-
}
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.RippleErrorsCmd = void 0;
|
|
7
|
-
function _chalk() {
|
|
8
|
-
const data = _interopRequireDefault(require("chalk"));
|
|
9
|
-
_chalk = function () {
|
|
10
|
-
return data;
|
|
11
|
-
};
|
|
12
|
-
return data;
|
|
13
|
-
}
|
|
14
|
-
function _rippleUtils() {
|
|
15
|
-
const data = require("./ripple-utils");
|
|
16
|
-
_rippleUtils = function () {
|
|
17
|
-
return data;
|
|
18
|
-
};
|
|
19
|
-
return data;
|
|
20
|
-
}
|
|
21
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
23
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
24
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
25
|
-
class RippleErrorsCmd {
|
|
26
|
-
constructor(ripple) {
|
|
27
|
-
this.ripple = ripple;
|
|
28
|
-
_defineProperty(this, "name", 'errors [job-id]');
|
|
29
|
-
_defineProperty(this, "description", 'show build errors for a Ripple CI job (auto-detects current lane when no job-id given)');
|
|
30
|
-
_defineProperty(this, "skipWorkspace", true);
|
|
31
|
-
_defineProperty(this, "remoteOp", true);
|
|
32
|
-
_defineProperty(this, "alias", '');
|
|
33
|
-
_defineProperty(this, "options", [['', 'lane <lane>', 'lane ID to find the latest failed job for (default: detected from .bitmap)'], ['', 'log', 'show full build log for failed containers (not just the error summary)'], ['j', 'json', 'return the output as JSON']]);
|
|
34
|
-
_defineProperty(this, "arguments", [{
|
|
35
|
-
name: 'job-id',
|
|
36
|
-
description: 'the Ripple CI job ID (optional — auto-detects from current lane)'
|
|
37
|
-
}]);
|
|
38
|
-
}
|
|
39
|
-
async report([jobId], flags) {
|
|
40
|
-
const {
|
|
41
|
-
job,
|
|
42
|
-
ciNodes
|
|
43
|
-
} = await this.getErrors(jobId, flags);
|
|
44
|
-
if (!job) {
|
|
45
|
-
if (jobId) {
|
|
46
|
-
return _chalk().default.red(`Job "${jobId}" not found.`);
|
|
47
|
-
}
|
|
48
|
-
const laneId = flags.lane || this.ripple.getCurrentLaneId();
|
|
49
|
-
if (laneId) {
|
|
50
|
-
return _chalk().default.red(`No failed Ripple CI job found for lane "${laneId}".`);
|
|
51
|
-
}
|
|
52
|
-
return _chalk().default.red('Could not find a Ripple CI job. Provide a job ID, use --lane, or run from a workspace on a lane.');
|
|
53
|
-
}
|
|
54
|
-
const lines = [];
|
|
55
|
-
lines.push(_chalk().default.bold(`Ripple CI Errors — ${job.name || job.id}`));
|
|
56
|
-
lines.push(` ${_chalk().default.cyan('Job ID:')} ${job.id}`);
|
|
57
|
-
lines.push(` ${_chalk().default.cyan('Status:')} ${(0, _rippleUtils().colorPhase)(job.status?.phase)}`);
|
|
58
|
-
if (job.laneId) lines.push(` ${_chalk().default.cyan('Lane:')} ${job.laneId}`);
|
|
59
|
-
lines.push(` ${_chalk().default.cyan('URL:')} ${this.ripple.getJobUrl(job)}`);
|
|
60
|
-
if (ciNodes.length === 0) {
|
|
61
|
-
lines.push('');
|
|
62
|
-
lines.push(_chalk().default.yellow('Could not determine which components are in this job.'));
|
|
63
|
-
return lines.join('\n');
|
|
64
|
-
}
|
|
65
|
-
const failedNodes = ciNodes.filter(n => (0, _rippleUtils().isFailedPhase)(n.phase));
|
|
66
|
-
const succeededNodes = ciNodes.filter(n => n.phase === 'SUCCESS');
|
|
67
|
-
const otherNodes = ciNodes.filter(n => !(0, _rippleUtils().isFailedPhase)(n.phase) && n.phase !== 'SUCCESS');
|
|
68
|
-
const totalComponents = ciNodes.reduce((sum, n) => sum + n.componentIds.length, 0);
|
|
69
|
-
const failedComponents = failedNodes.flatMap(n => n.componentIds);
|
|
70
|
-
const blockedComponents = otherNodes.flatMap(n => n.componentIds);
|
|
71
|
-
if (failedComponents.length === 0) {
|
|
72
|
-
if (job.status?.phase?.toUpperCase() === 'FAILURE') {
|
|
73
|
-
lines.push('');
|
|
74
|
-
lines.push(_chalk().default.yellow(`${totalComponents} component(s) in this job — no individual component failures found.`));
|
|
75
|
-
lines.push(_chalk().default.yellow('The failure may be in a pipeline-level step. Check the Ripple CI URL above.'));
|
|
76
|
-
} else {
|
|
77
|
-
lines.push('');
|
|
78
|
-
lines.push(_chalk().default.green(`All ${totalComponents} component(s) built successfully.`));
|
|
79
|
-
}
|
|
80
|
-
return lines.join('\n');
|
|
81
|
-
}
|
|
82
|
-
lines.push('');
|
|
83
|
-
lines.push(_chalk().default.red.bold(`${failedComponents.length} component(s) with build failures:`));
|
|
84
|
-
|
|
85
|
-
// fetch all build logs in parallel
|
|
86
|
-
const containerNames = failedNodes.map(n => n.containerName);
|
|
87
|
-
const logMap = await this.ripple.getContainerLogs(job.id, containerNames);
|
|
88
|
-
for (const node of failedNodes) {
|
|
89
|
-
const compList = node.componentIds.join(', ');
|
|
90
|
-
lines.push('');
|
|
91
|
-
lines.push(_chalk().default.bold(` ${compList}`));
|
|
92
|
-
const logMessages = logMap.get(node.containerName);
|
|
93
|
-
if (logMessages && logMessages.length > 0) {
|
|
94
|
-
const errorLines = flags.log ? logMessages : this.ripple.extractErrorsFromLog(logMessages);
|
|
95
|
-
if (errorLines.length > 0) {
|
|
96
|
-
for (const msg of errorLines) {
|
|
97
|
-
const clean = (0, _rippleUtils().stripAnsi)(msg);
|
|
98
|
-
// skip stack trace lines (noisy) unless --log is used
|
|
99
|
-
if (!flags.log && /^\s+at\s/.test(clean)) continue;
|
|
100
|
-
if (clean.length > 0) {
|
|
101
|
-
lines.push(` ${clean}`);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
} else {
|
|
105
|
-
lines.push(_chalk().default.gray(' No error details found in build log.'));
|
|
106
|
-
}
|
|
107
|
-
} else {
|
|
108
|
-
lines.push(_chalk().default.gray(' Build log not available.'));
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (blockedComponents.length > 0) {
|
|
112
|
-
lines.push('');
|
|
113
|
-
lines.push(_chalk().default.yellow(`${blockedComponents.length} component(s) not built (blocked by failure):`));
|
|
114
|
-
for (const compId of blockedComponents) {
|
|
115
|
-
lines.push(` ${_chalk().default.yellow('○')} ${compId}`);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
if (succeededNodes.length > 0) {
|
|
119
|
-
const succeededCount = succeededNodes.reduce((sum, n) => sum + n.componentIds.length, 0);
|
|
120
|
-
lines.push('');
|
|
121
|
-
lines.push(_chalk().default.green(`${succeededCount} component(s) built successfully.`));
|
|
122
|
-
}
|
|
123
|
-
return lines.join('\n');
|
|
124
|
-
}
|
|
125
|
-
async json([jobId], flags) {
|
|
126
|
-
const {
|
|
127
|
-
job,
|
|
128
|
-
ciNodes
|
|
129
|
-
} = await this.getErrors(jobId, flags);
|
|
130
|
-
if (!job) return {
|
|
131
|
-
error: 'No job found',
|
|
132
|
-
job: null,
|
|
133
|
-
ciNodes: [],
|
|
134
|
-
containerLogs: {}
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
// fetch error logs for failed containers in parallel
|
|
138
|
-
const failedNodes = ciNodes.filter(n => (0, _rippleUtils().isFailedPhase)(n.phase));
|
|
139
|
-
const containerNames = failedNodes.map(n => n.containerName);
|
|
140
|
-
const logMap = await this.ripple.getContainerLogs(job.id, containerNames);
|
|
141
|
-
const containerLogs = {};
|
|
142
|
-
for (const [name, messages] of logMap) {
|
|
143
|
-
containerLogs[name] = flags.log ? messages : this.ripple.extractErrorsFromLog(messages);
|
|
144
|
-
}
|
|
145
|
-
return {
|
|
146
|
-
job,
|
|
147
|
-
ciNodes,
|
|
148
|
-
containerLogs
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
async getErrors(jobId, flags) {
|
|
152
|
-
let job;
|
|
153
|
-
if (jobId) {
|
|
154
|
-
job = await this.ripple.getJob(jobId);
|
|
155
|
-
} else {
|
|
156
|
-
const laneId = flags.lane || this.ripple.getCurrentLaneId();
|
|
157
|
-
if (!laneId) {
|
|
158
|
-
return {
|
|
159
|
-
job: null,
|
|
160
|
-
ciNodes: []
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
const found = await this.ripple.findLatestJobForLane(laneId, 'FAILURE');
|
|
164
|
-
job = found ? await this.ripple.getJob(found.id) : null;
|
|
165
|
-
}
|
|
166
|
-
if (!job) {
|
|
167
|
-
return {
|
|
168
|
-
job: null,
|
|
169
|
-
ciNodes: []
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// use ciGraph (internal graph) for job-specific build status per container/component
|
|
174
|
-
const ciNodes = this.ripple.getCiGraphNodes(job);
|
|
175
|
-
return {
|
|
176
|
-
job,
|
|
177
|
-
ciNodes
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
exports.RippleErrorsCmd = RippleErrorsCmd;
|
|
182
|
-
|
|
183
|
-
//# sourceMappingURL=ripple-errors.cmd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_rippleUtils","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","RippleErrorsCmd","constructor","ripple","name","description","report","jobId","flags","job","ciNodes","getErrors","chalk","red","laneId","lane","getCurrentLaneId","lines","push","bold","id","cyan","colorPhase","status","phase","getJobUrl","length","yellow","join","failedNodes","filter","n","isFailedPhase","succeededNodes","otherNodes","totalComponents","reduce","sum","componentIds","failedComponents","flatMap","blockedComponents","toUpperCase","green","containerNames","map","containerName","logMap","getContainerLogs","node","compList","logMessages","get","errorLines","log","extractErrorsFromLog","msg","clean","stripAnsi","test","gray","compId","succeededCount","json","error","containerLogs","messages","getJob","found","findLatestJobForLane","getCiGraphNodes","exports"],"sources":["ripple-errors.cmd.ts"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport type { RippleMain, CiGraphNode } from './ripple.main.runtime';\nimport { colorPhase, isFailedPhase, stripAnsi } from './ripple-utils';\n\nexport class RippleErrorsCmd implements Command {\n name = 'errors [job-id]';\n description = 'show build errors for a Ripple CI job (auto-detects current lane when no job-id given)';\n skipWorkspace = true;\n remoteOp = true;\n alias = '';\n\n options: CommandOptions = [\n ['', 'lane <lane>', 'lane ID to find the latest failed job for (default: detected from .bitmap)'],\n ['', 'log', 'show full build log for failed containers (not just the error summary)'],\n ['j', 'json', 'return the output as JSON'],\n ];\n\n arguments = [{ name: 'job-id', description: 'the Ripple CI job ID (optional — auto-detects from current lane)' }];\n\n constructor(private ripple: RippleMain) {}\n\n async report([jobId]: [string], flags: { lane?: string; log?: boolean }) {\n const { job, ciNodes } = await this.getErrors(jobId, flags);\n\n if (!job) {\n if (jobId) {\n return chalk.red(`Job \"${jobId}\" not found.`);\n }\n const laneId = flags.lane || this.ripple.getCurrentLaneId();\n if (laneId) {\n return chalk.red(`No failed Ripple CI job found for lane \"${laneId}\".`);\n }\n return chalk.red(\n 'Could not find a Ripple CI job. Provide a job ID, use --lane, or run from a workspace on a lane.'\n );\n }\n\n const lines: string[] = [];\n lines.push(chalk.bold(`Ripple CI Errors — ${job.name || job.id}`));\n lines.push(` ${chalk.cyan('Job ID:')} ${job.id}`);\n lines.push(` ${chalk.cyan('Status:')} ${colorPhase(job.status?.phase)}`);\n if (job.laneId) lines.push(` ${chalk.cyan('Lane:')} ${job.laneId}`);\n lines.push(` ${chalk.cyan('URL:')} ${this.ripple.getJobUrl(job)}`);\n\n if (ciNodes.length === 0) {\n lines.push('');\n lines.push(chalk.yellow('Could not determine which components are in this job.'));\n return lines.join('\\n');\n }\n\n const failedNodes = ciNodes.filter((n) => isFailedPhase(n.phase));\n const succeededNodes = ciNodes.filter((n) => n.phase === 'SUCCESS');\n const otherNodes = ciNodes.filter((n) => !isFailedPhase(n.phase) && n.phase !== 'SUCCESS');\n\n const totalComponents = ciNodes.reduce((sum, n) => sum + n.componentIds.length, 0);\n const failedComponents = failedNodes.flatMap((n) => n.componentIds);\n const blockedComponents = otherNodes.flatMap((n) => n.componentIds);\n\n if (failedComponents.length === 0) {\n if (job.status?.phase?.toUpperCase() === 'FAILURE') {\n lines.push('');\n lines.push(\n chalk.yellow(`${totalComponents} component(s) in this job — no individual component failures found.`)\n );\n lines.push(chalk.yellow('The failure may be in a pipeline-level step. Check the Ripple CI URL above.'));\n } else {\n lines.push('');\n lines.push(chalk.green(`All ${totalComponents} component(s) built successfully.`));\n }\n return lines.join('\\n');\n }\n\n lines.push('');\n lines.push(chalk.red.bold(`${failedComponents.length} component(s) with build failures:`));\n\n // fetch all build logs in parallel\n const containerNames = failedNodes.map((n) => n.containerName);\n const logMap = await this.ripple.getContainerLogs(job.id, containerNames);\n\n for (const node of failedNodes) {\n const compList = node.componentIds.join(', ');\n lines.push('');\n lines.push(chalk.bold(` ${compList}`));\n\n const logMessages = logMap.get(node.containerName);\n if (logMessages && logMessages.length > 0) {\n const errorLines = flags.log ? logMessages : this.ripple.extractErrorsFromLog(logMessages);\n if (errorLines.length > 0) {\n for (const msg of errorLines) {\n const clean = stripAnsi(msg);\n // skip stack trace lines (noisy) unless --log is used\n if (!flags.log && /^\\s+at\\s/.test(clean)) continue;\n if (clean.length > 0) {\n lines.push(` ${clean}`);\n }\n }\n } else {\n lines.push(chalk.gray(' No error details found in build log.'));\n }\n } else {\n lines.push(chalk.gray(' Build log not available.'));\n }\n }\n\n if (blockedComponents.length > 0) {\n lines.push('');\n lines.push(chalk.yellow(`${blockedComponents.length} component(s) not built (blocked by failure):`));\n for (const compId of blockedComponents) {\n lines.push(` ${chalk.yellow('○')} ${compId}`);\n }\n }\n\n if (succeededNodes.length > 0) {\n const succeededCount = succeededNodes.reduce((sum, n) => sum + n.componentIds.length, 0);\n lines.push('');\n lines.push(chalk.green(`${succeededCount} component(s) built successfully.`));\n }\n\n return lines.join('\\n');\n }\n\n async json([jobId]: [string], flags: { lane?: string; log?: boolean }) {\n const { job, ciNodes } = await this.getErrors(jobId, flags);\n if (!job) return { error: 'No job found', job: null, ciNodes: [], containerLogs: {} };\n\n // fetch error logs for failed containers in parallel\n const failedNodes = ciNodes.filter((n) => isFailedPhase(n.phase));\n const containerNames = failedNodes.map((n) => n.containerName);\n const logMap = await this.ripple.getContainerLogs(job.id, containerNames);\n const containerLogs: Record<string, string[]> = {};\n for (const [name, messages] of logMap) {\n containerLogs[name] = flags.log ? messages : this.ripple.extractErrorsFromLog(messages);\n }\n\n return { job, ciNodes, containerLogs };\n }\n\n private async getErrors(\n jobId: string | undefined,\n flags: { lane?: string }\n ): Promise<{\n job: any;\n ciNodes: CiGraphNode[];\n }> {\n let job;\n\n if (jobId) {\n job = await this.ripple.getJob(jobId);\n } else {\n const laneId = flags.lane || this.ripple.getCurrentLaneId();\n if (!laneId) {\n return { job: null, ciNodes: [] };\n }\n const found = await this.ripple.findLatestJobForLane(laneId, 'FAILURE');\n job = found ? await this.ripple.getJob(found.id) : null;\n }\n\n if (!job) {\n return { job: null, ciNodes: [] };\n }\n\n // use ciGraph (internal graph) for job-specific build status per container/component\n const ciNodes = this.ripple.getCiGraphNodes(job);\n\n return { job, ciNodes };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { Command, CommandOptions } from '@teambit/cli';
|
|
2
|
-
import type { RippleMain, RippleJob } from './ripple.main.runtime';
|
|
3
|
-
export declare class RippleListCmd implements Command {
|
|
4
|
-
private ripple;
|
|
5
|
-
name: string;
|
|
6
|
-
description: string;
|
|
7
|
-
skipWorkspace: boolean;
|
|
8
|
-
remoteOp: boolean;
|
|
9
|
-
alias: string;
|
|
10
|
-
options: CommandOptions;
|
|
11
|
-
constructor(ripple: RippleMain);
|
|
12
|
-
report(args: [], flags: {
|
|
13
|
-
all?: boolean;
|
|
14
|
-
owner?: string;
|
|
15
|
-
scope?: string;
|
|
16
|
-
lane?: string;
|
|
17
|
-
user?: string;
|
|
18
|
-
status?: string;
|
|
19
|
-
limit?: string;
|
|
20
|
-
}): Promise<string>;
|
|
21
|
-
json(args: [], flags: {
|
|
22
|
-
all?: boolean;
|
|
23
|
-
owner?: string;
|
|
24
|
-
scope?: string;
|
|
25
|
-
lane?: string;
|
|
26
|
-
user?: string;
|
|
27
|
-
status?: string;
|
|
28
|
-
limit?: string;
|
|
29
|
-
}): Promise<{
|
|
30
|
-
jobs: RippleJob[];
|
|
31
|
-
}>;
|
|
32
|
-
private getFilteredJobs;
|
|
33
|
-
}
|