From e8c01ddc0a7d210bd6d7490445398348164510fc Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Mon, 17 Jun 2024 10:00:52 +0200 Subject: [PATCH] techdocs-node: still export ContainerRunner from backend-common Signed-off-by: Vincenzo Scamporlino --- .changeset/famous-roses-smell.md | 4 ++-- plugins/techdocs-node/api-report.md | 3 +++ plugins/techdocs-node/src/stages/generate/techdocs.ts | 11 ++++++++--- plugins/techdocs-node/src/stages/generate/types.ts | 2 ++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.changeset/famous-roses-smell.md b/.changeset/famous-roses-smell.md index 26cbc4b9d3..a091a6f32e 100644 --- a/.changeset/famous-roses-smell.md +++ b/.changeset/famous-roses-smell.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-techdocs-node': minor +'@backstage/plugin-techdocs-node': patch --- -**BREAKING**: `TechdocsGenerator` won't require a `containerRunner` option anymore for generating TechDocs in docker. +`TechdocsGenerator` won't require a `containerRunner` option anymore for generating TechDocs in docker. diff --git a/plugins/techdocs-node/api-report.md b/plugins/techdocs-node/api-report.md index 81bba6990f..7275586ef8 100644 --- a/plugins/techdocs-node/api-report.md +++ b/plugins/techdocs-node/api-report.md @@ -7,6 +7,7 @@ import { CompoundEntityRef } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; +import { ContainerRunner } from '@backstage/backend-common'; import { Entity } from '@backstage/catalog-model'; import express from 'express'; import { ExtensionPoint } from '@backstage/backend-plugin-api'; @@ -48,6 +49,7 @@ export type GeneratorBuilder = { // @public export type GeneratorOptions = { logger: Logger; + containerRunner?: ContainerRunner; }; // @public @@ -261,6 +263,7 @@ export interface TechDocsDocument extends IndexableDocument { export class TechdocsGenerator implements GeneratorBase { constructor(options: { logger: Logger; + containerRunner?: ContainerRunner; config: Config; scmIntegrations: ScmIntegrationRegistry; }); diff --git a/plugins/techdocs-node/src/stages/generate/techdocs.ts b/plugins/techdocs-node/src/stages/generate/techdocs.ts index b53e1c27d0..d66fd1e6f4 100644 --- a/plugins/techdocs-node/src/stages/generate/techdocs.ts +++ b/plugins/techdocs-node/src/stages/generate/techdocs.ts @@ -43,6 +43,7 @@ import { } from './types'; import { ForwardedError } from '@backstage/errors'; import { DockerContainerRunner } from './DockerContainerRunner'; +import { ContainerRunner } from '@backstage/backend-common'; /** * Generates documentation files @@ -55,6 +56,7 @@ export class TechdocsGenerator implements GeneratorBase { */ public static readonly defaultDockerImage = 'spotify/techdocs:v1.2.3'; private readonly logger: Logger; + private readonly containerRunner: ContainerRunner; private readonly options: GeneratorConfig; private readonly scmIntegrations: ScmIntegrationRegistry; @@ -64,10 +66,11 @@ export class TechdocsGenerator implements GeneratorBase { * @param options - Options to configure the generator */ static fromConfig(config: Config, options: GeneratorOptions) { - const { logger } = options; + const { containerRunner, logger } = options; const scmIntegrations = ScmIntegrations.fromConfig(config); return new TechdocsGenerator({ logger, + containerRunner, config, scmIntegrations, }); @@ -75,11 +78,14 @@ export class TechdocsGenerator implements GeneratorBase { constructor(options: { logger: Logger; + containerRunner?: ContainerRunner; config: Config; scmIntegrations: ScmIntegrationRegistry; }) { this.logger = options.logger; this.options = readGeneratorConfig(options.config, options.logger); + this.containerRunner = + options.containerRunner || new DockerContainerRunner(); this.scmIntegrations = options.scmIntegrations; } @@ -152,8 +158,7 @@ export class TechdocsGenerator implements GeneratorBase { ); break; case 'docker': { - const containerRunner = new DockerContainerRunner(); - await containerRunner.runContainer({ + await this.containerRunner.runContainer({ imageName: this.options.dockerImage ?? TechdocsGenerator.defaultDockerImage, args: ['build', '-d', '/output'], diff --git a/plugins/techdocs-node/src/stages/generate/types.ts b/plugins/techdocs-node/src/stages/generate/types.ts index 8a54ec5188..80468905fd 100644 --- a/plugins/techdocs-node/src/stages/generate/types.ts +++ b/plugins/techdocs-node/src/stages/generate/types.ts @@ -18,6 +18,7 @@ import { Entity } from '@backstage/catalog-model'; import { Writable } from 'stream'; import { Logger } from 'winston'; import { ParsedLocationAnnotation } from '../../helpers'; +import { ContainerRunner } from '@backstage/backend-common'; // Determines where the generator will be run export type GeneratorRunInType = 'docker' | 'local'; @@ -28,6 +29,7 @@ export type GeneratorRunInType = 'docker' | 'local'; */ export type GeneratorOptions = { logger: Logger; + containerRunner?: ContainerRunner; }; /**