From 5de5998aa963fba2f9c41d8c0c96fc56d7e34d6a Mon Sep 17 00:00:00 2001 From: Bridget Barnes Date: Wed, 23 Mar 2022 10:43:50 +1100 Subject: [PATCH 01/11] Use logger in syncroniser for tech docs Signed-off-by: Bridget Barnes --- plugins/techdocs-backend/src/service/DocsSynchronizer.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/techdocs-backend/src/service/DocsSynchronizer.ts b/plugins/techdocs-backend/src/service/DocsSynchronizer.ts index 090efc4639..03ee557f80 100644 --- a/plugins/techdocs-backend/src/service/DocsSynchronizer.ts +++ b/plugins/techdocs-backend/src/service/DocsSynchronizer.ts @@ -96,6 +96,7 @@ export class DocsSynchronizer { }); taskLogger.add(new winston.transports.Stream({ stream: logStream })); + taskLogger.add(this.logger); // check if the last update check was too recent if (!shouldCheckForUpdate(entity.metadata.uid!)) { From 58d799e4d944acf6ac67c9cdf7c1a1d53e815491 Mon Sep 17 00:00:00 2001 From: Bridget Barnes Date: Wed, 23 Mar 2022 13:21:38 +1100 Subject: [PATCH 02/11] Add changeset Signed-off-by: Bridget Barnes --- .changeset/quiet-paws-study.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/quiet-paws-study.md diff --git a/.changeset/quiet-paws-study.md b/.changeset/quiet-paws-study.md new file mode 100644 index 0000000000..64f13c8e2c --- /dev/null +++ b/.changeset/quiet-paws-study.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-backend': patch +--- + +Use DocsSnycroniser logger to get build output logs in addition to EventStream From 9121f4fbf0bf42b58e58f86359986440252aef7f Mon Sep 17 00:00:00 2001 From: Bridget Barnes Date: Wed, 23 Mar 2022 13:46:39 +1100 Subject: [PATCH 03/11] Update changelog message Signed-off-by: Bridget Barnes --- .changeset/quiet-paws-study.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/quiet-paws-study.md b/.changeset/quiet-paws-study.md index 64f13c8e2c..a89c3115bc 100644 --- a/.changeset/quiet-paws-study.md +++ b/.changeset/quiet-paws-study.md @@ -2,4 +2,4 @@ '@backstage/plugin-techdocs-backend': patch --- -Use DocsSnycroniser logger to get build output logs in addition to EventStream +Output logs from TechDocs build to a logger in addition to existing frontend event stream From 42bd92aee4bbfdd246be14af52c9a2a4020987dc Mon Sep 17 00:00:00 2001 From: Bridget Barnes Date: Fri, 8 Apr 2022 14:24:17 +1000 Subject: [PATCH 04/11] try injection Signed-off-by: Bridget Barnes --- plugins/techdocs-backend/src/service/DocsSynchronizer.ts | 5 ++++- plugins/techdocs-backend/src/service/router.ts | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/techdocs-backend/src/service/DocsSynchronizer.ts b/plugins/techdocs-backend/src/service/DocsSynchronizer.ts index 03ee557f80..87c174f8ac 100644 --- a/plugins/techdocs-backend/src/service/DocsSynchronizer.ts +++ b/plugins/techdocs-backend/src/service/DocsSynchronizer.ts @@ -43,6 +43,7 @@ export type DocsSynchronizerSyncOpts = { export class DocsSynchronizer { private readonly publisher: PublisherBase; private readonly logger: winston.Logger; + private readonly buildLogger: winston.Logger; private readonly config: Config; private readonly scmIntegrations: ScmIntegrationRegistry; private readonly cache: TechDocsCache | undefined; @@ -50,6 +51,7 @@ export class DocsSynchronizer { constructor({ publisher, logger, + buildLogger, config, scmIntegrations, cache, @@ -62,6 +64,7 @@ export class DocsSynchronizer { }) { this.config = config; this.logger = logger; + this.buildLogger = buildLogger; this.publisher = publisher; this.scmIntegrations = scmIntegrations; this.cache = cache; @@ -96,7 +99,7 @@ export class DocsSynchronizer { }); taskLogger.add(new winston.transports.Stream({ stream: logStream })); - taskLogger.add(this.logger); + taskLogger.add(this.buildLogger); // check if the last update check was too recent if (!shouldCheckForUpdate(entity.metadata.uid!)) { diff --git a/plugins/techdocs-backend/src/service/router.ts b/plugins/techdocs-backend/src/service/router.ts index 148143e460..e37f01909a 100644 --- a/plugins/techdocs-backend/src/service/router.ts +++ b/plugins/techdocs-backend/src/service/router.ts @@ -56,6 +56,7 @@ export type OutOfTheBoxDeploymentOptions = { config: Config; cache: PluginCacheManager; docsBuildStrategy?: DocsBuildStrategy; + buildLogger: Logger; }; /** @@ -127,6 +128,7 @@ export async function createRouter( const docsSynchronizer = new DocsSynchronizer({ publisher, logger, + buildLogger, config, scmIntegrations, cache, From fe5474e0c9066e439a27c7a8d922ebbeb75d220f Mon Sep 17 00:00:00 2001 From: Bridget Barnes Date: Fri, 8 Apr 2022 15:44:33 +1000 Subject: [PATCH 05/11] make optional Signed-off-by: Bridget Barnes --- .../techdocs-backend/src/service/DocsSynchronizer.ts | 1 + plugins/techdocs-backend/src/service/router.ts | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/plugins/techdocs-backend/src/service/DocsSynchronizer.ts b/plugins/techdocs-backend/src/service/DocsSynchronizer.ts index 87c174f8ac..9f3f92fbb0 100644 --- a/plugins/techdocs-backend/src/service/DocsSynchronizer.ts +++ b/plugins/techdocs-backend/src/service/DocsSynchronizer.ts @@ -58,6 +58,7 @@ export class DocsSynchronizer { }: { publisher: PublisherBase; logger: winston.Logger; + buildLogger: winston.Logger; config: Config; scmIntegrations: ScmIntegrationRegistry; cache: TechDocsCache | undefined; diff --git a/plugins/techdocs-backend/src/service/router.ts b/plugins/techdocs-backend/src/service/router.ts index e37f01909a..36a095f813 100644 --- a/plugins/techdocs-backend/src/service/router.ts +++ b/plugins/techdocs-backend/src/service/router.ts @@ -30,7 +30,7 @@ import { import express, { Response } from 'express'; import Router from 'express-promise-router'; import { Knex } from 'knex'; -import { Logger } from 'winston'; +import { createLogger, Logger } from 'winston'; import { ScmIntegrations } from '@backstage/integration'; import { DocsSynchronizer, DocsSynchronizerSyncOpts } from './DocsSynchronizer'; import { createCacheMiddleware, TechDocsCache } from '../cache'; @@ -56,7 +56,7 @@ export type OutOfTheBoxDeploymentOptions = { config: Config; cache: PluginCacheManager; docsBuildStrategy?: DocsBuildStrategy; - buildLogger: Logger; + buildLogger?: Logger; }; /** @@ -72,6 +72,7 @@ export type RecommendedDeploymentOptions = { config: Config; cache: PluginCacheManager; docsBuildStrategy?: DocsBuildStrategy; + buildLogger?: Logger; }; /** @@ -108,6 +109,11 @@ export async function createRouter( const catalogClient = new CatalogClient({ discoveryApi: discovery }); const docsBuildStrategy = options.docsBuildStrategy ?? DefaultDocsBuildStrategy.fromConfig(config); + const buildLogger = + options.buildLogger ?? + createLogger({ + silent: true, + }); // Entities are cached to optimize the /static/docs request path, which can be called many times // when loading a single techdocs page. From 0fffa599416e515eb12d11040c4f48c97f462c7a Mon Sep 17 00:00:00 2001 From: Bridget Barnes Date: Tue, 12 Apr 2022 10:44:46 +1000 Subject: [PATCH 06/11] Add test Add test Signed-off-by: Bridget Barnes --- .../src/service/DocsSynchronizer.test.ts | 26 +++++++++++++++++++ .../src/service/DocsSynchronizer.ts | 10 +++---- .../techdocs-backend/src/service/router.ts | 21 +++++++-------- 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts b/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts index 05dfb5bdcc..cec79cda58 100644 --- a/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts +++ b/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts @@ -25,6 +25,8 @@ import { PreparerBuilder, PublisherBase, } from '@backstage/plugin-techdocs-node'; +import { PassThrough } from 'stream'; +import * as winston from 'winston'; import { TechDocsCache } from '../cache'; import { DocsBuilder, shouldCheckForUpdate } from '../DocsBuilder'; import { DocsSynchronizer, DocsSynchronizerSyncOpts } from './DocsSynchronizer'; @@ -74,12 +76,17 @@ describe('DocsSynchronizer', () => { } as unknown as jest.Mocked; let docsSynchronizer: DocsSynchronizer; + const mockResponseHandler: jest.Mocked = { log: jest.fn(), finish: jest.fn(), error: jest.fn(), }; + const mockBuildLogTransport = new winston.transports.Stream({ + stream: new PassThrough(), + }); + beforeEach(async () => { publisher.docsRouter.mockReturnValue(() => {}); discovery.getBaseUrl.mockImplementation(async type => { @@ -90,6 +97,7 @@ describe('DocsSynchronizer', () => { publisher, config: new ConfigReader({}), logger: getVoidLogger(), + buildLogTransport: mockBuildLogTransport, scmIntegrations: ScmIntegrations.fromConfig(new ConfigReader({})), cache, }); @@ -289,6 +297,7 @@ describe('DocsSynchronizer', () => { techdocs: { legacyUseCaseSensitiveTripletPaths: true }, }), logger: getVoidLogger(), + buildLogger: getVoidLogger(), scmIntegrations: ScmIntegrations.fromConfig(new ConfigReader({})), cache, }); @@ -321,5 +330,22 @@ describe('DocsSynchronizer', () => { expect(mockResponseHandler.finish).toBeCalledWith({ updated: false }); }); + + it('should log to the build logger', async () => { + let logger: winston.Logger; + MockedDocsBuilder.prototype.build.mockImplementation(async () => { + logger = MockedDocsBuilder.mock.calls[0][0].logger; + expect(logger.transports).toContain(mockBuildLogTransport); + + return true; + }); + + await docsSynchronizer.doSync({ + responseHandler: mockResponseHandler, + entity, + preparers, + generators, + }); + }); }); }); diff --git a/plugins/techdocs-backend/src/service/DocsSynchronizer.ts b/plugins/techdocs-backend/src/service/DocsSynchronizer.ts index 9f3f92fbb0..6c377381e0 100644 --- a/plugins/techdocs-backend/src/service/DocsSynchronizer.ts +++ b/plugins/techdocs-backend/src/service/DocsSynchronizer.ts @@ -43,7 +43,7 @@ export type DocsSynchronizerSyncOpts = { export class DocsSynchronizer { private readonly publisher: PublisherBase; private readonly logger: winston.Logger; - private readonly buildLogger: winston.Logger; + private readonly buildLogTransport: winston.transport; private readonly config: Config; private readonly scmIntegrations: ScmIntegrationRegistry; private readonly cache: TechDocsCache | undefined; @@ -51,21 +51,21 @@ export class DocsSynchronizer { constructor({ publisher, logger, - buildLogger, + buildLogTransport, config, scmIntegrations, cache, }: { publisher: PublisherBase; logger: winston.Logger; - buildLogger: winston.Logger; + buildLogTransport: winston.transport; config: Config; scmIntegrations: ScmIntegrationRegistry; cache: TechDocsCache | undefined; }) { this.config = config; this.logger = logger; - this.buildLogger = buildLogger; + this.buildLogTransport = buildLogTransport; this.publisher = publisher; this.scmIntegrations = scmIntegrations; this.cache = cache; @@ -100,7 +100,7 @@ export class DocsSynchronizer { }); taskLogger.add(new winston.transports.Stream({ stream: logStream })); - taskLogger.add(this.buildLogger); + taskLogger.add(this.buildLogTransport); // check if the last update check was too recent if (!shouldCheckForUpdate(entity.metadata.uid!)) { diff --git a/plugins/techdocs-backend/src/service/router.ts b/plugins/techdocs-backend/src/service/router.ts index 36a095f813..ca887efce2 100644 --- a/plugins/techdocs-backend/src/service/router.ts +++ b/plugins/techdocs-backend/src/service/router.ts @@ -30,7 +30,6 @@ import { import express, { Response } from 'express'; import Router from 'express-promise-router'; import { Knex } from 'knex'; -import { createLogger, Logger } from 'winston'; import { ScmIntegrations } from '@backstage/integration'; import { DocsSynchronizer, DocsSynchronizerSyncOpts } from './DocsSynchronizer'; import { createCacheMiddleware, TechDocsCache } from '../cache'; @@ -39,6 +38,8 @@ import { DefaultDocsBuildStrategy, DocsBuildStrategy, } from './DocsBuildStrategy'; +import * as winston from 'winston'; +import { PassThrough } from 'stream'; /** * Required dependencies for running TechDocs in the "out-of-the-box" @@ -50,13 +51,13 @@ export type OutOfTheBoxDeploymentOptions = { preparers: PreparerBuilder; generators: GeneratorBuilder; publisher: PublisherBase; - logger: Logger; + logger: winston.Logger; discovery: PluginEndpointDiscovery; database?: Knex; // TODO: Make database required when we're implementing database stuff. config: Config; cache: PluginCacheManager; docsBuildStrategy?: DocsBuildStrategy; - buildLogger?: Logger; + buildLogTransport?: winston.transport; }; /** @@ -67,12 +68,12 @@ export type OutOfTheBoxDeploymentOptions = { */ export type RecommendedDeploymentOptions = { publisher: PublisherBase; - logger: Logger; + logger: winston.Logger; discovery: PluginEndpointDiscovery; config: Config; cache: PluginCacheManager; docsBuildStrategy?: DocsBuildStrategy; - buildLogger?: Logger; + buildLogTransport?: winston.transport; }; /** @@ -109,11 +110,9 @@ export async function createRouter( const catalogClient = new CatalogClient({ discoveryApi: discovery }); const docsBuildStrategy = options.docsBuildStrategy ?? DefaultDocsBuildStrategy.fromConfig(config); - const buildLogger = - options.buildLogger ?? - createLogger({ - silent: true, - }); + const buildLogTransport = + options.buildLogTransport ?? + new winston.transports.Stream({ stream: new PassThrough() }); // Entities are cached to optimize the /static/docs request path, which can be called many times // when loading a single techdocs page. @@ -134,7 +133,7 @@ export async function createRouter( const docsSynchronizer = new DocsSynchronizer({ publisher, logger, - buildLogger, + buildLogTransport, config, scmIntegrations, cache, From d147f5ca15a1692f87480269aa4f52f326720569 Mon Sep 17 00:00:00 2001 From: Bridget Barnes Date: Wed, 27 Apr 2022 16:55:54 +1000 Subject: [PATCH 07/11] Use transport, not logger Signed-off-by: Bridget Barnes --- .changeset/quiet-paws-study.md | 63 ++++++++++++++++++- .../src/service/DocsSynchronizer.test.ts | 6 +- 2 files changed, 66 insertions(+), 3 deletions(-) diff --git a/.changeset/quiet-paws-study.md b/.changeset/quiet-paws-study.md index a89c3115bc..ffa18da1e8 100644 --- a/.changeset/quiet-paws-study.md +++ b/.changeset/quiet-paws-study.md @@ -2,4 +2,65 @@ '@backstage/plugin-techdocs-backend': patch --- -Output logs from TechDocs build to a logger in addition to existing frontend event stream +Output logs from a TechDocs build to a logging transport in addition to existing frontend event stream, for capturing these logs to other sources. + +This allows users to capture debugging information around why tech docs fail to build without needing to rely on end users ending information from their web browser. + +The most common use case is to log to the same place as the rest of the backend application logs. + +To use, include + +``` +import { DockerContainerRunner } from '@backstage/backend-common'; +import { + createRouter, + Generators, + Preparers, + Publisher, +} from '@backstage/plugin-techdocs-backend'; +import Docker from 'dockerode'; +import { Router } from 'express'; +import { PluginEnvironment } from '../types'; + +export default async function createPlugin( + env: PluginEnvironment, +): Promise { + // Preparers are responsible for fetching source files for documentation. + const preparers = await Preparers.fromConfig(env.config, { + logger: env.logger, + reader: env.reader, + }); + + // Docker client (conditionally) used by the generators, based on techdocs.generators config. + const dockerClient = new Docker(); + const containerRunner = new DockerContainerRunner({ dockerClient }); + + // Generators are used for generating documentation sites. + const generators = await Generators.fromConfig(env.config, { + logger: env.logger, + containerRunner, + }); + + // Publisher is used for + // 1. Publishing generated files to storage + // 2. Fetching files from storage and passing them to TechDocs frontend. + const publisher = await Publisher.fromConfig(env.config, { + logger: env.logger, + discovery: env.discovery, + }); + + // checks if the publisher is working and logs the result + await publisher.getReadiness(); + + return await createRouter({ + preparers, + generators, + publisher, + logger: env.logger, + buildTransportLogger: env.logger, + config: env.config, + discovery: env.discovery, + cache: env.cache, + }); +} +``` diff --git a/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts b/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts index cec79cda58..fff35bedc0 100644 --- a/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts +++ b/plugins/techdocs-backend/src/service/DocsSynchronizer.test.ts @@ -297,7 +297,9 @@ describe('DocsSynchronizer', () => { techdocs: { legacyUseCaseSensitiveTripletPaths: true }, }), logger: getVoidLogger(), - buildLogger: getVoidLogger(), + buildLogTransport: new winston.transports.Stream({ + stream: new PassThrough(), + }), scmIntegrations: ScmIntegrations.fromConfig(new ConfigReader({})), cache, }); @@ -331,7 +333,7 @@ describe('DocsSynchronizer', () => { expect(mockResponseHandler.finish).toBeCalledWith({ updated: false }); }); - it('should log to the build logger', async () => { + it("adds the build log transport to the logger's list of transports", async () => { let logger: winston.Logger; MockedDocsBuilder.prototype.build.mockImplementation(async () => { logger = MockedDocsBuilder.mock.calls[0][0].logger; From d6661bf59324104feb571bb7d98fd6a27afb5957 Mon Sep 17 00:00:00 2001 From: Bridget Barnes Date: Tue, 3 May 2022 10:55:49 +1000 Subject: [PATCH 08/11] Apply suggestions from code review Co-authored-by: Nik Skoufis Signed-off-by: Bridget Barnes --- .changeset/quiet-paws-study.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.changeset/quiet-paws-study.md b/.changeset/quiet-paws-study.md index ffa18da1e8..e6957b83cb 100644 --- a/.changeset/quiet-paws-study.md +++ b/.changeset/quiet-paws-study.md @@ -4,11 +4,11 @@ Output logs from a TechDocs build to a logging transport in addition to existing frontend event stream, for capturing these logs to other sources. -This allows users to capture debugging information around why tech docs fail to build without needing to rely on end users ending information from their web browser. +This allows users to capture debugging information around why tech docs fail to build without needing to rely on end users capturing information from their web browser. The most common use case is to log to the same place as the rest of the backend application logs. -To use, include +Sample usage: ``` import { DockerContainerRunner } from '@backstage/backend-common'; @@ -57,7 +57,7 @@ export default async function createPlugin( generators, publisher, logger: env.logger, - buildTransportLogger: env.logger, + buildLogTransport: env.logger, config: env.config, discovery: env.discovery, cache: env.cache, From 24d5763a22b1c151823fe5655e96df2843474487 Mon Sep 17 00:00:00 2001 From: Bridget Barnes Date: Tue, 3 May 2022 11:15:01 +1000 Subject: [PATCH 09/11] Tweak changeset example comments Signed-off-by: Bridget Barnes --- .changeset/quiet-paws-study.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/.changeset/quiet-paws-study.md b/.changeset/quiet-paws-study.md index e6957b83cb..adbc8d1b3d 100644 --- a/.changeset/quiet-paws-study.md +++ b/.changeset/quiet-paws-study.md @@ -2,11 +2,14 @@ '@backstage/plugin-techdocs-backend': patch --- -Output logs from a TechDocs build to a logging transport in addition to existing frontend event stream, for capturing these logs to other sources. +Output logs from a TechDocs build to a logging transport in addition to existing +frontend event stream, for capturing these logs to other sources. -This allows users to capture debugging information around why tech docs fail to build without needing to rely on end users capturing information from their web browser. +This allows users to capture debugging information around why tech docs fail to build +without needing to rely on end users capturing information from their web browser. -The most common use case is to log to the same place as the rest of the backend application logs. +The most common use case is to log to the same place as the rest of the backend +application logs. Sample usage: @@ -25,31 +28,24 @@ import { PluginEnvironment } from '../types'; export default async function createPlugin( env: PluginEnvironment, ): Promise { - // Preparers are responsible for fetching source files for documentation. const preparers = await Preparers.fromConfig(env.config, { logger: env.logger, reader: env.reader, }); - // Docker client (conditionally) used by the generators, based on techdocs.generators config. const dockerClient = new Docker(); const containerRunner = new DockerContainerRunner({ dockerClient }); - // Generators are used for generating documentation sites. const generators = await Generators.fromConfig(env.config, { logger: env.logger, containerRunner, }); - // Publisher is used for - // 1. Publishing generated files to storage - // 2. Fetching files from storage and passing them to TechDocs frontend. const publisher = await Publisher.fromConfig(env.config, { logger: env.logger, discovery: env.discovery, }); - // checks if the publisher is working and logs the result await publisher.getReadiness(); return await createRouter({ @@ -57,6 +53,8 @@ export default async function createPlugin( generators, publisher, logger: env.logger, + // Passing a buildLogTransport as a parameter in createRouter will enable + // capturing build logs to a backend log stream buildLogTransport: env.logger, config: env.config, discovery: env.discovery, From bf4995ef8cc86c8837bfbaa6e3bd33532d15c511 Mon Sep 17 00:00:00 2001 From: Bridget Barnes Date: Tue, 3 May 2022 12:51:20 +1000 Subject: [PATCH 10/11] Add API report Signed-off-by: Bridget Barnes --- plugins/techdocs-backend/api-report.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/techdocs-backend/api-report.md b/plugins/techdocs-backend/api-report.md index 157f049953..57e5e5170f 100644 --- a/plugins/techdocs-backend/api-report.md +++ b/plugins/techdocs-backend/api-report.md @@ -21,6 +21,7 @@ import { PublisherBase } from '@backstage/plugin-techdocs-node'; import { Readable } from 'stream'; import { TechDocsDocument } from '@backstage/plugin-techdocs-node'; import { TokenManager } from '@backstage/backend-common'; +import * as winston from 'winston'; // @public export function createRouter(options: RouterOptions): Promise; @@ -71,22 +72,24 @@ export type OutOfTheBoxDeploymentOptions = { preparers: PreparerBuilder; generators: GeneratorBuilder; publisher: PublisherBase; - logger: Logger; + logger: winston.Logger; discovery: PluginEndpointDiscovery; database?: Knex; config: Config; cache: PluginCacheManager; docsBuildStrategy?: DocsBuildStrategy; + buildLogTransport?: winston.transport; }; // @public export type RecommendedDeploymentOptions = { publisher: PublisherBase; - logger: Logger; + logger: winston.Logger; discovery: PluginEndpointDiscovery; config: Config; cache: PluginCacheManager; docsBuildStrategy?: DocsBuildStrategy; + buildLogTransport?: winston.transport; }; // @public From 5d66d4ff67f5e7302a1d420b5de721893536c656 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Thu, 19 May 2022 10:36:31 +0200 Subject: [PATCH 11/11] chore(techdocs): prefix changeset with techdocs This pull request only changes a TechDocs package, so it doesn't require review by other Backstage teams Signed-off-by: Camila Belo --- .changeset/{quiet-paws-study.md => techdocs-paws-study.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .changeset/{quiet-paws-study.md => techdocs-paws-study.md} (100%) diff --git a/.changeset/quiet-paws-study.md b/.changeset/techdocs-paws-study.md similarity index 100% rename from .changeset/quiet-paws-study.md rename to .changeset/techdocs-paws-study.md