renovate 44.199.0 → 44.199.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/instrumentation/file-exporter.js.map +1 -1
- package/dist/instrumentation/index.js +17 -12
- package/dist/instrumentation/index.js.map +1 -1
- package/dist/modules/datasource/span-processor.js.map +1 -1
- package/dist/util/git/span-processor.js.map +1 -1
- package/package.json +19 -19
- package/renovate-schema.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-exporter.js","names":[],"sources":["../../lib/instrumentation/file-exporter.ts"],"sourcesContent":["import { appendFile } from 'node:fs/promises';\nimport { diag } from '@opentelemetry/api';\nimport { JsonTraceSerializer } from '@opentelemetry/otlp-transformer';\nimport type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace
|
|
1
|
+
{"version":3,"file":"file-exporter.js","names":[],"sources":["../../lib/instrumentation/file-exporter.ts"],"sourcesContent":["import { appendFile } from 'node:fs/promises';\nimport { diag } from '@opentelemetry/api';\nimport { JsonTraceSerializer } from '@opentelemetry/otlp-transformer';\nimport type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace';\n\n// Taken from https://github.com/open-telemetry/opentelemetry-js/blob/2.10.0/packages/opentelemetry-core/src/ExportResult.ts and inlined, as we don't need to add an unnecessary dependency for this type that doesn't change.\n// A plain object is used instead of a real `enum`, since this repo runs `.ts` files directly via Node's type-stripping, which cannot emit runtime code for `enum`.\nexport const ExportResultCode = {\n SUCCESS: 0,\n FAILED: 1,\n} as const;\n\nexport type ExportResultCode =\n (typeof ExportResultCode)[keyof typeof ExportResultCode];\n\nexport class FileSpanExporter implements SpanExporter {\n private readonly filePath: string;\n private stopped = false;\n private readonly pendingWrites = new Set<Promise<void>>();\n\n constructor(filePath: string) {\n this.filePath = filePath;\n }\n\n export(\n spans: ReadableSpan[],\n resultCallback: (result: { code: number; error?: Error }) => void,\n ): void {\n if (this.stopped) {\n resultCallback({ code: ExportResultCode.FAILED });\n return;\n }\n\n const pending = this.writeSpans(spans).then(\n () => resultCallback({ code: ExportResultCode.SUCCESS }),\n (error) => {\n diag.error('FileSpanExporter failed to write spans', error);\n resultCallback({ code: ExportResultCode.FAILED, error });\n },\n );\n this.pendingWrites.add(pending);\n void pending.finally(() => this.pendingWrites.delete(pending));\n }\n\n private async writeSpans(spans: ReadableSpan[]): Promise<void> {\n const serialized = JsonTraceSerializer.serializeRequest(spans);\n /* v8 ignore start -- upstream type allows `undefined`, but the JSON serializer never returns it */\n if (serialized === undefined) {\n return;\n }\n /* v8 ignore stop */\n const line = `${Buffer.from(serialized).toString('utf-8')}\\n`;\n await appendFile(this.filePath, line, 'utf-8');\n }\n\n async shutdown(): Promise<void> {\n this.stopped = true;\n await this.forceFlush();\n }\n\n async forceFlush(): Promise<void> {\n await Promise.all(this.pendingWrites);\n }\n}\n"],"mappings":";;;;AAOA,MAAa,mBAAmB;CAC9B,SAAS;CACT,QAAQ;AACV;AAKA,IAAa,mBAAb,MAAsD;CACpD;CACA,UAAkB;CAClB,gCAAiC,IAAI,IAAmB;CAExD,YAAY,UAAkB;EAC5B,KAAK,WAAW;CAClB;CAEA,OACE,OACA,gBACM;EACN,IAAI,KAAK,SAAS;GAChB,eAAe,EAAE,MAAM,iBAAiB,OAAO,CAAC;GAChD;EACF;EAEA,MAAM,UAAU,KAAK,WAAW,KAAK,CAAC,CAAC,WAC/B,eAAe,EAAE,MAAM,iBAAiB,QAAQ,CAAC,IACtD,UAAU;GACT,KAAK,MAAM,0CAA0C,KAAK;GAC1D,eAAe;IAAE,MAAM,iBAAiB;IAAQ;GAAM,CAAC;EACzD,CACF;EACA,KAAK,cAAc,IAAI,OAAO;EAC9B,QAAa,cAAc,KAAK,cAAc,OAAO,OAAO,CAAC;CAC/D;CAEA,MAAc,WAAW,OAAsC;EAC7D,MAAM,aAAa,oBAAoB,iBAAiB,KAAK;;EAE7D,IAAI,eAAe,KAAA,GACjB;;EAGF,MAAM,OAAO,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE;EAC1D,MAAM,WAAW,KAAK,UAAU,MAAM,OAAO;CAC/C;CAEA,MAAM,WAA0B;EAC9B,KAAK,UAAU;EACf,MAAM,KAAK,WAAW;CACxB;CAEA,MAAM,aAA4B;EAChC,MAAM,QAAQ,IAAI,KAAK,aAAa;CACtC;AACF"}
|
|
@@ -9,6 +9,7 @@ import { ClientRequest, ServerResponse } from "node:http";
|
|
|
9
9
|
import * as api from "@opentelemetry/api";
|
|
10
10
|
import { ProxyTracerProvider, SpanStatusCode } from "@opentelemetry/api";
|
|
11
11
|
import { AsyncLocalStorageContextManager } from "@opentelemetry/context-async-hooks";
|
|
12
|
+
import { CompositePropagator, W3CBaggagePropagator, W3CTraceContextPropagator } from "@opentelemetry/core";
|
|
12
13
|
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-grpc";
|
|
13
14
|
import { OTLPTraceExporter as OTLPTraceExporter$1 } from "@opentelemetry/exporter-trace-otlp-http";
|
|
14
15
|
import { OTLPTraceExporter as OTLPTraceExporter$2 } from "@opentelemetry/exporter-trace-otlp-proto";
|
|
@@ -17,8 +18,7 @@ import { BunyanInstrumentation } from "@opentelemetry/instrumentation-bunyan";
|
|
|
17
18
|
import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
|
|
18
19
|
import { RedisInstrumentation } from "@opentelemetry/instrumentation-redis";
|
|
19
20
|
import { detectResources, resourceFromAttributes } from "@opentelemetry/resources";
|
|
20
|
-
import { BatchSpanProcessor, ConsoleSpanExporter, SimpleSpanProcessor } from "@opentelemetry/sdk-trace
|
|
21
|
-
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
|
21
|
+
import { BatchSpanProcessor, ConsoleSpanExporter, SimpleSpanProcessor, TracerProvider } from "@opentelemetry/sdk-trace";
|
|
22
22
|
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from "@opentelemetry/semantic-conventions";
|
|
23
23
|
//#region lib/instrumentation/index.ts
|
|
24
24
|
let instrumentations = [];
|
|
@@ -28,17 +28,24 @@ function createOtlpExporter() {
|
|
|
28
28
|
if (protocol === "http/protobuf") return new OTLPTraceExporter$2();
|
|
29
29
|
return new OTLPTraceExporter$1();
|
|
30
30
|
}
|
|
31
|
+
function registerProvider(provider) {
|
|
32
|
+
const contextManager = new AsyncLocalStorageContextManager();
|
|
33
|
+
contextManager.enable();
|
|
34
|
+
api.context.setGlobalContextManager(contextManager);
|
|
35
|
+
api.propagation.setGlobalPropagator(new CompositePropagator({ propagators: [new W3CTraceContextPropagator(), new W3CBaggagePropagator()] }));
|
|
36
|
+
api.trace.setGlobalTracerProvider(provider);
|
|
37
|
+
}
|
|
31
38
|
function init() {
|
|
32
39
|
const spanProcessors = [new GitOperationSpanProcessor(), new GetDatasourceReleasesSpanProcessor()];
|
|
33
40
|
if (!isTracingEnabled()) {
|
|
34
|
-
new
|
|
41
|
+
registerProvider(new TracerProvider({ spanProcessors }));
|
|
35
42
|
return;
|
|
36
43
|
}
|
|
37
44
|
// v8 ignore if -- TODO add tests
|
|
38
45
|
if (process.env.OTEL_LOG_LEVEL) api.diag.setLogger(new api.DiagConsoleLogger(), api.DiagLogLevel[process.env.OTEL_LOG_LEVEL.toUpperCase()]);
|
|
39
|
-
if (isTraceDebuggingEnabled()) spanProcessors.push(new SimpleSpanProcessor(new ConsoleSpanExporter()));
|
|
40
|
-
if (isTraceSendingEnabled()) spanProcessors.push(new BatchSpanProcessor(createOtlpExporter()));
|
|
41
|
-
if (isFileExporterEnabled()) spanProcessors.push(new BatchSpanProcessor(new FileSpanExporter(getFileExporterPath())));
|
|
46
|
+
if (isTraceDebuggingEnabled()) spanProcessors.push(new SimpleSpanProcessor({ exporter: new ConsoleSpanExporter() }));
|
|
47
|
+
if (isTraceSendingEnabled()) spanProcessors.push(new BatchSpanProcessor({ exporter: createOtlpExporter() }));
|
|
48
|
+
if (isFileExporterEnabled()) spanProcessors.push(new BatchSpanProcessor({ exporter: new FileSpanExporter(getFileExporterPath()) }));
|
|
42
49
|
const env = process.env;
|
|
43
50
|
const baseResource = resourceFromAttributes({
|
|
44
51
|
[ATTR_SERVICE_NAME]: env.OTEL_SERVICE_NAME ?? "renovate",
|
|
@@ -46,12 +53,10 @@ function init() {
|
|
|
46
53
|
[ATTR_SERVICE_VERSION]: env.OTEL_SERVICE_VERSION ?? pkg.version
|
|
47
54
|
});
|
|
48
55
|
const detectedResource = detectResources({ detectors: getResourceDetectors(env) });
|
|
49
|
-
|
|
56
|
+
registerProvider(new TracerProvider({
|
|
50
57
|
resource: baseResource.merge(detectedResource),
|
|
51
58
|
spanProcessors
|
|
52
|
-
});
|
|
53
|
-
const contextManager = new AsyncLocalStorageContextManager();
|
|
54
|
-
traceProvider.register({ contextManager });
|
|
59
|
+
}));
|
|
55
60
|
instrumentations = [
|
|
56
61
|
new HttpInstrumentation({
|
|
57
62
|
/* v8 ignore start -- not easily testable */
|
|
@@ -67,10 +72,10 @@ applyCustomAttributesOnSpan: (span, request, response) => {
|
|
|
67
72
|
/* v8 ignore next -- not easily testable */
|
|
68
73
|
async function shutdown() {
|
|
69
74
|
const traceProvider = getTracerProvider();
|
|
70
|
-
if (traceProvider instanceof
|
|
75
|
+
if (traceProvider instanceof TracerProvider) await traceProvider.shutdown();
|
|
71
76
|
else if (traceProvider instanceof ProxyTracerProvider) {
|
|
72
77
|
const delegateProvider = traceProvider.getDelegate();
|
|
73
|
-
if (delegateProvider instanceof
|
|
78
|
+
if (delegateProvider instanceof TracerProvider) await delegateProvider.shutdown();
|
|
74
79
|
}
|
|
75
80
|
}
|
|
76
81
|
function getTracerProvider() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["OTLPTraceExporterGrpc","OTLPTraceExporterProto","OTLPTraceExporterHttp"],"sources":["../../lib/instrumentation/index.ts"],"sourcesContent":["import { ClientRequest, ServerResponse } from 'node:http';\nimport type { Context, Span, Tracer, TracerProvider } from '@opentelemetry/api';\nimport * as api from '@opentelemetry/api';\nimport { ProxyTracerProvider, SpanStatusCode } from '@opentelemetry/api';\nimport { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { OTLPTraceExporter as OTLPTraceExporterGrpc } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { OTLPTraceExporter as OTLPTraceExporterHttp } from '@opentelemetry/exporter-trace-otlp-http';\nimport { OTLPTraceExporter as OTLPTraceExporterProto } from '@opentelemetry/exporter-trace-otlp-proto';\nimport type { Instrumentation } from '@opentelemetry/instrumentation';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { BunyanInstrumentation } from '@opentelemetry/instrumentation-bunyan';\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http';\nimport { RedisInstrumentation } from '@opentelemetry/instrumentation-redis';\nimport {\n detectResources,\n resourceFromAttributes,\n} from '@opentelemetry/resources';\nimport {\n BatchSpanProcessor,\n ConsoleSpanExporter,\n SimpleSpanProcessor,\n type SpanExporter,\n type SpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_SERVICE_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { isPromise } from '@sindresorhus/is';\nimport { pkg } from '../expose.ts';\nimport { GetDatasourceReleasesSpanProcessor } from '../modules/datasource/span-processor.ts';\nimport { GitOperationSpanProcessor } from '../util/git/span-processor.ts';\nimport { getResourceDetectors } from './detectors.ts';\nimport { FileSpanExporter } from './file-exporter.ts';\nimport type { RenovateSpanOptions } from './types.ts';\nimport {\n getFileExporterPath,\n getOtlpProtocol,\n isFileExporterEnabled,\n isTraceDebuggingEnabled,\n isTraceSendingEnabled,\n isTracingEnabled,\n massageThrowable,\n} from './utils.ts';\n\nlet instrumentations: Instrumentation[] = [];\n\nfunction createOtlpExporter(): SpanExporter {\n const protocol = getOtlpProtocol();\n if (protocol === 'grpc') {\n return new OTLPTraceExporterGrpc();\n }\n if (protocol === 'http/protobuf') {\n return new OTLPTraceExporterProto();\n }\n return new OTLPTraceExporterHttp();\n}\n\nexport function init(): void {\n const spanProcessors: SpanProcessor[] = [\n new GitOperationSpanProcessor(),\n new GetDatasourceReleasesSpanProcessor(),\n ];\n\n if (!isTracingEnabled()) {\n const traceProvider = new NodeTracerProvider({ spanProcessors });\n traceProvider.register({\n contextManager: new AsyncLocalStorageContextManager(),\n });\n return;\n }\n\n // v8 ignore if -- TODO add tests\n if (process.env.OTEL_LOG_LEVEL) {\n api.diag.setLogger(\n new api.DiagConsoleLogger(),\n api.DiagLogLevel[\n process.env.OTEL_LOG_LEVEL.toUpperCase() as keyof typeof api.DiagLogLevel\n ],\n );\n }\n\n // add processors\n if (isTraceDebuggingEnabled()) {\n spanProcessors.push(new SimpleSpanProcessor(new ConsoleSpanExporter()));\n }\n\n // OTEL specification environment variable\n if (isTraceSendingEnabled()) {\n spanProcessors.push(new BatchSpanProcessor(createOtlpExporter()));\n }\n\n if (isFileExporterEnabled()) {\n spanProcessors.push(\n new BatchSpanProcessor(new FileSpanExporter(getFileExporterPath())),\n );\n }\n\n const env = process.env; // don't use getEnv() here to avoid circular dependency with env variables used in the resource detectors\n const baseResource = resourceFromAttributes({\n // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#semantic-attributes-with-sdk-provided-default-value\n [ATTR_SERVICE_NAME]: env.OTEL_SERVICE_NAME ?? 'renovate',\n // https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n // https://github.com/open-telemetry/opentelemetry-js/blob/e9d3c71918635d490b6a9ac9f8259265b38394d0/semantic-conventions/src/experimental_attributes.ts#L7688\n ['service.namespace']: env.OTEL_SERVICE_NAMESPACE ?? 'renovatebot.com',\n [ATTR_SERVICE_VERSION]: env.OTEL_SERVICE_VERSION ?? pkg.version,\n });\n\n const detectedResource = detectResources({\n detectors: getResourceDetectors(env),\n });\n\n const traceProvider = new NodeTracerProvider({\n resource: baseResource.merge(detectedResource),\n spanProcessors,\n });\n\n const contextManager = new AsyncLocalStorageContextManager();\n traceProvider.register({\n contextManager,\n });\n\n instrumentations = [\n new HttpInstrumentation({\n /* v8 ignore start -- not easily testable */\n applyCustomAttributesOnSpan: (span, request, response) => {\n // ignore 404 errors when the branch protection of Github could not be found. This is expected if no rules are configured\n if (\n request instanceof ClientRequest &&\n request.host === `api.github.com` &&\n request.path.endsWith(`/protection`) &&\n response.statusCode === 404\n ) {\n span.setStatus({ code: SpanStatusCode.OK });\n } else if (\n request instanceof ClientRequest &&\n request.path === '/v2/' &&\n request.method === 'GET' &&\n !request.getHeader('authorization') &&\n response instanceof ServerResponse &&\n response.getHeader('www-authenticate') &&\n response.getHeader('docker-distribution-api-version') &&\n response.statusCode === 401\n ) {\n // Docker API test expects 401 with `www-authenticate` header when registry requires authentication, so ignore this error\n span.setStatus({ code: SpanStatusCode.OK });\n }\n },\n /* v8 ignore stop -- not easily testable */\n }),\n new BunyanInstrumentation(),\n new RedisInstrumentation(),\n ];\n registerInstrumentations({\n instrumentations,\n });\n}\n\n// https://github.com/open-telemetry/opentelemetry-js-api/issues/34\n/* v8 ignore next -- not easily testable */\nexport async function shutdown(): Promise<void> {\n const traceProvider = getTracerProvider();\n if (traceProvider instanceof NodeTracerProvider) {\n await traceProvider.shutdown();\n } else if (traceProvider instanceof ProxyTracerProvider) {\n const delegateProvider = traceProvider.getDelegate();\n if (delegateProvider instanceof NodeTracerProvider) {\n await delegateProvider.shutdown();\n }\n }\n}\n\nexport function disableInstrumentations(): void {\n for (const instrumentation of instrumentations) {\n instrumentation.disable();\n }\n}\n\nexport function getTracerProvider(): TracerProvider {\n return api.trace.getTracerProvider();\n}\n\nfunction getTracer(): Tracer {\n return getTracerProvider().getTracer('renovate');\n}\n\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n): ReturnType<F>;\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n options: RenovateSpanOptions,\n): ReturnType<F>;\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n options: RenovateSpanOptions,\n context: Context,\n): ReturnType<F>;\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n options: RenovateSpanOptions = {},\n context: Context = api.context.active(),\n): ReturnType<F> {\n return getTracer().startActiveSpan(name, options, context, (span: Span) => {\n try {\n const ret = fn();\n if (isPromise(ret)) {\n return ret\n .catch((e) => {\n span.recordException(e);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: massageThrowable(e),\n });\n throw e;\n })\n .finally(() => span.end()) as ReturnType<F>;\n }\n span.end();\n return ret;\n } catch (e) {\n span.recordException(e);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: massageThrowable(e),\n });\n span.end();\n throw e;\n }\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["OTLPTraceExporterGrpc","OTLPTraceExporterProto","OTLPTraceExporterHttp","SdkTracerProvider"],"sources":["../../lib/instrumentation/index.ts"],"sourcesContent":["import { ClientRequest, ServerResponse } from 'node:http';\nimport type { Context, Span, Tracer, TracerProvider } from '@opentelemetry/api';\nimport * as api from '@opentelemetry/api';\nimport { ProxyTracerProvider, SpanStatusCode } from '@opentelemetry/api';\nimport { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport {\n CompositePropagator,\n W3CBaggagePropagator,\n W3CTraceContextPropagator,\n} from '@opentelemetry/core';\nimport { OTLPTraceExporter as OTLPTraceExporterGrpc } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { OTLPTraceExporter as OTLPTraceExporterHttp } from '@opentelemetry/exporter-trace-otlp-http';\nimport { OTLPTraceExporter as OTLPTraceExporterProto } from '@opentelemetry/exporter-trace-otlp-proto';\nimport type { Instrumentation } from '@opentelemetry/instrumentation';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { BunyanInstrumentation } from '@opentelemetry/instrumentation-bunyan';\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http';\nimport { RedisInstrumentation } from '@opentelemetry/instrumentation-redis';\nimport {\n detectResources,\n resourceFromAttributes,\n} from '@opentelemetry/resources';\nimport {\n BatchSpanProcessor,\n ConsoleSpanExporter,\n TracerProvider as SdkTracerProvider,\n SimpleSpanProcessor,\n type SpanExporter,\n type SpanProcessor,\n} from '@opentelemetry/sdk-trace';\nimport {\n ATTR_SERVICE_NAME,\n ATTR_SERVICE_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { isPromise } from '@sindresorhus/is';\nimport { pkg } from '../expose.ts';\nimport { GetDatasourceReleasesSpanProcessor } from '../modules/datasource/span-processor.ts';\nimport { GitOperationSpanProcessor } from '../util/git/span-processor.ts';\nimport { getResourceDetectors } from './detectors.ts';\nimport { FileSpanExporter } from './file-exporter.ts';\nimport type { RenovateSpanOptions } from './types.ts';\nimport {\n getFileExporterPath,\n getOtlpProtocol,\n isFileExporterEnabled,\n isTraceDebuggingEnabled,\n isTraceSendingEnabled,\n isTracingEnabled,\n massageThrowable,\n} from './utils.ts';\n\nlet instrumentations: Instrumentation[] = [];\n\nfunction createOtlpExporter(): SpanExporter {\n const protocol = getOtlpProtocol();\n if (protocol === 'grpc') {\n return new OTLPTraceExporterGrpc();\n }\n if (protocol === 'http/protobuf') {\n return new OTLPTraceExporterProto();\n }\n return new OTLPTraceExporterHttp();\n}\n\nfunction registerProvider(provider: SdkTracerProvider): void {\n const contextManager = new AsyncLocalStorageContextManager();\n contextManager.enable();\n api.context.setGlobalContextManager(contextManager);\n api.propagation.setGlobalPropagator(\n new CompositePropagator({\n propagators: [\n new W3CTraceContextPropagator(),\n new W3CBaggagePropagator(),\n ],\n }),\n );\n api.trace.setGlobalTracerProvider(provider);\n}\n\nexport function init(): void {\n const spanProcessors: SpanProcessor[] = [\n new GitOperationSpanProcessor(),\n new GetDatasourceReleasesSpanProcessor(),\n ];\n\n if (!isTracingEnabled()) {\n registerProvider(new SdkTracerProvider({ spanProcessors }));\n return;\n }\n\n // v8 ignore if -- TODO add tests\n if (process.env.OTEL_LOG_LEVEL) {\n api.diag.setLogger(\n new api.DiagConsoleLogger(),\n api.DiagLogLevel[\n process.env.OTEL_LOG_LEVEL.toUpperCase() as keyof typeof api.DiagLogLevel\n ],\n );\n }\n\n // add processors\n if (isTraceDebuggingEnabled()) {\n spanProcessors.push(\n new SimpleSpanProcessor({ exporter: new ConsoleSpanExporter() }),\n );\n }\n\n // OTEL specification environment variable\n if (isTraceSendingEnabled()) {\n spanProcessors.push(\n new BatchSpanProcessor({ exporter: createOtlpExporter() }),\n );\n }\n\n if (isFileExporterEnabled()) {\n spanProcessors.push(\n new BatchSpanProcessor({\n exporter: new FileSpanExporter(getFileExporterPath()),\n }),\n );\n }\n\n const env = process.env; // don't use getEnv() here to avoid circular dependency with env variables used in the resource detectors\n const baseResource = resourceFromAttributes({\n // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#semantic-attributes-with-sdk-provided-default-value\n [ATTR_SERVICE_NAME]: env.OTEL_SERVICE_NAME ?? 'renovate',\n // https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n // https://github.com/open-telemetry/opentelemetry-js/blob/e9d3c71918635d490b6a9ac9f8259265b38394d0/semantic-conventions/src/experimental_attributes.ts#L7688\n ['service.namespace']: env.OTEL_SERVICE_NAMESPACE ?? 'renovatebot.com',\n [ATTR_SERVICE_VERSION]: env.OTEL_SERVICE_VERSION ?? pkg.version,\n });\n\n const detectedResource = detectResources({\n detectors: getResourceDetectors(env),\n });\n\n registerProvider(\n new SdkTracerProvider({\n resource: baseResource.merge(detectedResource),\n spanProcessors,\n }),\n );\n\n instrumentations = [\n new HttpInstrumentation({\n /* v8 ignore start -- not easily testable */\n applyCustomAttributesOnSpan: (span, request, response) => {\n // ignore 404 errors when the branch protection of Github could not be found. This is expected if no rules are configured\n if (\n request instanceof ClientRequest &&\n request.host === `api.github.com` &&\n request.path.endsWith(`/protection`) &&\n response.statusCode === 404\n ) {\n span.setStatus({ code: SpanStatusCode.OK });\n } else if (\n request instanceof ClientRequest &&\n request.path === '/v2/' &&\n request.method === 'GET' &&\n !request.getHeader('authorization') &&\n response instanceof ServerResponse &&\n response.getHeader('www-authenticate') &&\n response.getHeader('docker-distribution-api-version') &&\n response.statusCode === 401\n ) {\n // Docker API test expects 401 with `www-authenticate` header when registry requires authentication, so ignore this error\n span.setStatus({ code: SpanStatusCode.OK });\n }\n },\n /* v8 ignore stop -- not easily testable */\n }),\n new BunyanInstrumentation(),\n new RedisInstrumentation(),\n ];\n registerInstrumentations({\n instrumentations,\n });\n}\n\n// https://github.com/open-telemetry/opentelemetry-js-api/issues/34\n/* v8 ignore next -- not easily testable */\nexport async function shutdown(): Promise<void> {\n const traceProvider = getTracerProvider();\n if (traceProvider instanceof SdkTracerProvider) {\n await traceProvider.shutdown();\n } else if (traceProvider instanceof ProxyTracerProvider) {\n const delegateProvider = traceProvider.getDelegate();\n if (delegateProvider instanceof SdkTracerProvider) {\n await delegateProvider.shutdown();\n }\n }\n}\n\nexport function disableInstrumentations(): void {\n for (const instrumentation of instrumentations) {\n instrumentation.disable();\n }\n}\n\nexport function getTracerProvider(): TracerProvider {\n return api.trace.getTracerProvider();\n}\n\nfunction getTracer(): Tracer {\n return getTracerProvider().getTracer('renovate');\n}\n\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n): ReturnType<F>;\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n options: RenovateSpanOptions,\n): ReturnType<F>;\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n options: RenovateSpanOptions,\n context: Context,\n): ReturnType<F>;\nexport function instrument<F extends () => ReturnType<F>>(\n name: string,\n fn: F,\n options: RenovateSpanOptions = {},\n context: Context = api.context.active(),\n): ReturnType<F> {\n return getTracer().startActiveSpan(name, options, context, (span: Span) => {\n try {\n const ret = fn();\n if (isPromise(ret)) {\n return ret\n .catch((e) => {\n span.recordException(e);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: massageThrowable(e),\n });\n throw e;\n })\n .finally(() => span.end()) as ReturnType<F>;\n }\n span.end();\n return ret;\n } catch (e) {\n span.recordException(e);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: massageThrowable(e),\n });\n span.end();\n throw e;\n }\n });\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span-processor.js","names":[],"sources":["../../../lib/modules/datasource/span-processor.ts"],"sourcesContent":["import type { Context } from '@opentelemetry/api';\nimport type {\n ReadableSpan,\n Span,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace
|
|
1
|
+
{"version":3,"file":"span-processor.js","names":[],"sources":["../../../lib/modules/datasource/span-processor.ts"],"sourcesContent":["import type { Context } from '@opentelemetry/api';\nimport type {\n ReadableSpan,\n Span,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace';\nimport { ATTR_CODE_FUNCTION_NAME } from '@opentelemetry/semantic-conventions';\nimport {\n ATTR_RENOVATE_DATASOURCE,\n ATTR_RENOVATE_PACKAGE_NAME,\n ATTR_RENOVATE_REGISTRY_URL,\n} from '../../instrumentation/types.ts';\nimport { GetDatasourceReleasesStats } from '../../util/stats.ts';\n\nexport class GetDatasourceReleasesSpanProcessor implements SpanProcessor {\n forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n\n onStart(_span: Span, _parentContext: Context): void {\n // no implementation\n }\n\n onEnd(span: ReadableSpan): void {\n if (!span.ended) {\n return;\n }\n\n if (span.attributes[ATTR_CODE_FUNCTION_NAME] !== 'getReleases') {\n return;\n }\n\n const datasource = span.attributes[ATTR_RENOVATE_DATASOURCE] as string;\n const registryUrl = (span.attributes[ATTR_RENOVATE_REGISTRY_URL] ??\n '') as string;\n const packageName = span.attributes[ATTR_RENOVATE_PACKAGE_NAME] as string;\n\n if (!datasource || !packageName) {\n return;\n }\n\n // duration[0] is seconds, duration[1] is nanoseconds.\n const durationMs = span.duration[0] * 1000 + span.duration[1] / 1_000_000;\n\n GetDatasourceReleasesStats.write(\n datasource,\n registryUrl,\n packageName,\n durationMs,\n );\n }\n\n shutdown(): Promise<void> {\n return Promise.resolve();\n }\n}\n"],"mappings":";;;;AAcA,IAAa,qCAAb,MAAyE;CACvE,aAA4B;EAC1B,OAAO,QAAQ,QAAQ;CACzB;CAEA,QAAQ,OAAa,gBAA+B,CAEpD;CAEA,MAAM,MAA0B;EAC9B,IAAI,CAAC,KAAK,OACR;EAGF,IAAI,KAAK,WAAW,6BAA6B,eAC/C;EAGF,MAAM,aAAa,KAAK,WAAW;EACnC,MAAM,cAAe,KAAK,WAAA,2BACxB;EACF,MAAM,cAAc,KAAK,WAAW;EAEpC,IAAI,CAAC,cAAc,CAAC,aAClB;EAIF,MAAM,aAAa,KAAK,SAAS,KAAK,MAAO,KAAK,SAAS,KAAK;EAEhE,2BAA2B,MACzB,YACA,aACA,aACA,UACF;CACF;CAEA,WAA0B;EACxB,OAAO,QAAQ,QAAQ;CACzB;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span-processor.js","names":[],"sources":["../../../lib/util/git/span-processor.ts"],"sourcesContent":["import type { Context } from '@opentelemetry/api';\nimport type {\n ReadableSpan,\n Span,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace
|
|
1
|
+
{"version":3,"file":"span-processor.js","names":[],"sources":["../../../lib/util/git/span-processor.ts"],"sourcesContent":["import type { Context } from '@opentelemetry/api';\nimport type {\n ReadableSpan,\n Span,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace';\nimport { ATTR_VCS_GIT_OPERATION_TYPE } from '../../instrumentation/types.ts';\nimport { GitOperationStats } from '../stats.ts';\nimport type { GitOperationType } from './types.ts';\n\nexport class GitOperationSpanProcessor implements SpanProcessor {\n forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n\n onStart(_span: Span, _parentContext: Context): void {\n // no implementation\n }\n\n // v8 ignore next -- TODO: add test #40625\n onEnd(span: ReadableSpan): void {\n if (!span.ended) {\n return;\n }\n\n if (!span.attributes[ATTR_VCS_GIT_OPERATION_TYPE]) {\n return;\n }\n\n const start = span.startTime; // [seconds, nanos]\n const end = span.endTime; // [seconds, nanos]\n const startNs = start[0] * 1e9 + start[1];\n const endNs = end[0] * 1e9 + end[1];\n const ns = endNs - startNs;\n\n GitOperationStats.write(\n span.attributes[ATTR_VCS_GIT_OPERATION_TYPE] as GitOperationType,\n ns / 1_000_000,\n );\n }\n\n shutdown(): Promise<void> {\n return Promise.resolve();\n }\n}\n"],"mappings":";;;AAUA,IAAa,4BAAb,MAAgE;CAC9D,aAA4B;EAC1B,OAAO,QAAQ,QAAQ;CACzB;CAEA,QAAQ,OAAa,gBAA+B,CAEpD;;CAGA,MAAM,MAA0B;EAC9B,IAAI,CAAC,KAAK,OACR;EAGF,IAAI,CAAC,KAAK,WAAA,2BACR;EAGF,MAAM,QAAQ,KAAK;EACnB,MAAM,MAAM,KAAK;EACjB,MAAM,UAAU,MAAM,KAAK,MAAM,MAAM;EAEvC,MAAM,KADQ,IAAI,KAAK,MAAM,IAAI,KACd;EAEnB,kBAAkB,MAChB,KAAK,WAAW,8BAChB,KAAK,GACP;CACF;CAEA,WAA0B;EACxB,OAAO,QAAQ,QAAQ;CACzB;AACF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "renovate",
|
|
3
3
|
"description": "Automated dependency updates. Flexible so you don't need to be.",
|
|
4
|
-
"version": "44.199.
|
|
4
|
+
"version": "44.199.2",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"renovate": "dist/renovate.js",
|
|
@@ -97,23 +97,23 @@
|
|
|
97
97
|
"@baszalmstra/rattler": "0.2.1",
|
|
98
98
|
"@breejs/later": "4.2.0",
|
|
99
99
|
"@cdktf/hcl2json": "0.21.0",
|
|
100
|
-
"@opentelemetry/api": "1.
|
|
101
|
-
"@opentelemetry/context-async-hooks": "
|
|
102
|
-
"@opentelemetry/
|
|
103
|
-
"@opentelemetry/exporter-trace-otlp-
|
|
104
|
-
"@opentelemetry/exporter-trace-otlp-
|
|
105
|
-
"@opentelemetry/
|
|
106
|
-
"@opentelemetry/instrumentation
|
|
107
|
-
"@opentelemetry/instrumentation-
|
|
108
|
-
"@opentelemetry/instrumentation-
|
|
109
|
-
"@opentelemetry/
|
|
110
|
-
"@opentelemetry/
|
|
111
|
-
"@opentelemetry/resource-detector-
|
|
112
|
-
"@opentelemetry/resource-detector-
|
|
113
|
-
"@opentelemetry/resource-detector-
|
|
114
|
-
"@opentelemetry/
|
|
115
|
-
"@opentelemetry/
|
|
116
|
-
"@opentelemetry/sdk-trace
|
|
100
|
+
"@opentelemetry/api": "1.10.0",
|
|
101
|
+
"@opentelemetry/context-async-hooks": "3.0.0",
|
|
102
|
+
"@opentelemetry/core": "3.0.0",
|
|
103
|
+
"@opentelemetry/exporter-trace-otlp-grpc": "0.300.0",
|
|
104
|
+
"@opentelemetry/exporter-trace-otlp-http": "0.300.0",
|
|
105
|
+
"@opentelemetry/exporter-trace-otlp-proto": "0.300.0",
|
|
106
|
+
"@opentelemetry/instrumentation": "0.300.0",
|
|
107
|
+
"@opentelemetry/instrumentation-bunyan": "0.69.0",
|
|
108
|
+
"@opentelemetry/instrumentation-http": "0.300.0",
|
|
109
|
+
"@opentelemetry/instrumentation-redis": "0.72.0",
|
|
110
|
+
"@opentelemetry/otlp-transformer": "0.300.0",
|
|
111
|
+
"@opentelemetry/resource-detector-aws": "3.0.0",
|
|
112
|
+
"@opentelemetry/resource-detector-azure": "0.32.0",
|
|
113
|
+
"@opentelemetry/resource-detector-gcp": "0.59.0",
|
|
114
|
+
"@opentelemetry/resource-detector-github": "0.34.0",
|
|
115
|
+
"@opentelemetry/resources": "3.0.0",
|
|
116
|
+
"@opentelemetry/sdk-trace": "3.0.0",
|
|
117
117
|
"@opentelemetry/semantic-conventions": "1.43.0",
|
|
118
118
|
"@pnpm/parse-overrides": "1001.0.4",
|
|
119
119
|
"@qnighy/marshal": "0.1.3",
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
"got": "16.1.0",
|
|
164
164
|
"graph-data-structure": "4.5.0",
|
|
165
165
|
"handlebars": "4.7.10",
|
|
166
|
-
"ignore": "7.0.
|
|
166
|
+
"ignore": "7.0.14",
|
|
167
167
|
"ini": "6.0.0",
|
|
168
168
|
"json-dup-key-validator": "1.0.3",
|
|
169
169
|
"json-stringify-pretty-compact": "4.0.0",
|
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 44.199.
|
|
3
|
+
"title": "JSON schema for Renovate 44.199.2 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "44.199.
|
|
5
|
+
"x-renovate-version": "44.199.2",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"definitions": {
|