diff --git a/.changeset/cuddly-eggs-sin.md b/.changeset/cuddly-eggs-sin.md new file mode 100644 index 0000000000..bfe7de9680 --- /dev/null +++ b/.changeset/cuddly-eggs-sin.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-techdocs-backend': patch +'@backstage/plugin-techdocs-node': patch +--- + +Allow defining custom build log transport for techdocs builder diff --git a/plugins/techdocs-backend/src/plugin.ts b/plugins/techdocs-backend/src/plugin.ts index 6f670abfa9..094335a0f0 100644 --- a/plugins/techdocs-backend/src/plugin.ts +++ b/plugins/techdocs-backend/src/plugin.ts @@ -38,6 +38,7 @@ import { } from '@backstage/plugin-techdocs-node'; import Docker from 'dockerode'; import { createRouter } from '@backstage/plugin-techdocs-backend'; +import * as winston from 'winston'; /** * The TechDocs plugin is responsible for serving and building documentation for any entity. @@ -47,6 +48,7 @@ export const techdocsPlugin = createBackendPlugin({ pluginId: 'techdocs', register(env) { let docsBuildStrategy: DocsBuildStrategy | undefined; + let buildLogTransport: winston.transport | undefined; env.registerExtensionPoint(techdocsBuildsExtensionPoint, { setBuildStrategy(buildStrategy: DocsBuildStrategy) { if (docsBuildStrategy) { @@ -54,6 +56,12 @@ export const techdocsPlugin = createBackendPlugin({ } docsBuildStrategy = buildStrategy; }, + setBuildLogTransport(transport: winston.transport) { + if (buildLogTransport) { + throw new Error('BuildLogTransport may only be set once'); + } + buildLogTransport = transport; + }, }); let customTechdocsGenerator: TechdocsGenerator | undefined; @@ -138,6 +146,7 @@ export const techdocsPlugin = createBackendPlugin({ logger: winstonLogger, cache: cacheManager, docsBuildStrategy, + buildLogTransport, preparers, generators, publisher, diff --git a/plugins/techdocs-node/api-report.md b/plugins/techdocs-node/api-report.md index 4e79ee712c..2d3ca90983 100644 --- a/plugins/techdocs-node/api-report.md +++ b/plugins/techdocs-node/api-report.md @@ -16,6 +16,7 @@ import { Logger } from 'winston'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { UrlReader } from '@backstage/backend-common'; +import * as winston from 'winston'; import { Writable } from 'stream'; // @public @@ -240,6 +241,8 @@ export type SupportedGeneratorKey = 'techdocs' | string; // @public export interface TechdocsBuildsExtensionPoint { + // (undocumented) + setBuildLogTransport(transport: winston.transport): void; // (undocumented) setBuildStrategy(buildStrategy: DocsBuildStrategy): void; } diff --git a/plugins/techdocs-node/src/extensions.ts b/plugins/techdocs-node/src/extensions.ts index ed292a3b17..8e7c9ef244 100644 --- a/plugins/techdocs-node/src/extensions.ts +++ b/plugins/techdocs-node/src/extensions.ts @@ -16,6 +16,7 @@ import { createExtensionPoint } from '@backstage/backend-plugin-api'; import { DocsBuildStrategy } from './techdocsTypes'; import { PreparerBase, RemoteProtocol, TechdocsGenerator } from './stages'; +import * as winston from 'winston'; /** * Extension point type for configuring Techdocs builds. @@ -24,6 +25,7 @@ import { PreparerBase, RemoteProtocol, TechdocsGenerator } from './stages'; */ export interface TechdocsBuildsExtensionPoint { setBuildStrategy(buildStrategy: DocsBuildStrategy): void; + setBuildLogTransport(transport: winston.transport): void; } /**