feat: allow defining custom build log transport for techdocs

should enable way to overcome #24583 memory leak, maybe.

Signed-off-by: Heikki Hellgren <heikki.hellgren@op.fi>
This commit is contained in:
Heikki Hellgren
2024-05-02 12:08:14 +03:00
parent 32cc4e6468
commit e64bfb27cf
4 changed files with 20 additions and 0 deletions
+6
View File
@@ -0,0 +1,6 @@
---
'@backstage/plugin-techdocs-backend': patch
'@backstage/plugin-techdocs-node': patch
---
Allow defining custom build log transport for techdocs builder
+9
View File
@@ -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,
+3
View File
@@ -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;
}
+2
View File
@@ -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;
}
/**