From c5cdc7e74d79421e6b11f0a7dd1583099414b752 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 4 Jan 2021 10:56:46 +0100 Subject: [PATCH] chore: starting the migration of a publisher --- .../src/scaffolder/stages/publish/azure.ts | 4 +- .../src/scaffolder/stages/publish/gitlab.ts | 37 +++++++++++++++---- .../src/scaffolder/stages/publish/types.ts | 1 - 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/azure.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/azure.ts index ffe6845f01..8947c09e60 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/azure.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/azure.ts @@ -17,7 +17,7 @@ import { PublisherBase, PublisherOptions, PublisherResult } from './types'; import { GitApi } from 'azure-devops-node-api/GitApi'; import { GitRepositoryCreateOptions } from 'azure-devops-node-api/interfaces/GitInterfaces'; -import { JsonValue } from '@backstage/config'; +import { JsonValue, Config } from '@backstage/config'; import { RequiredTemplateValues } from '../templater'; import { initRepoAndPush } from './helpers'; @@ -25,7 +25,7 @@ export class AzurePublisher implements PublisherBase { private readonly client: GitApi; private readonly token: string; - constructor(client: GitApi, token: string) { + constructor(config: Config) { this.client = client; this.token = token; } diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/gitlab.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/gitlab.ts index 156a4a249c..66d110d2d7 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/gitlab.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/gitlab.ts @@ -16,23 +16,46 @@ import { PublisherBase, PublisherOptions, PublisherResult } from './types'; import { Gitlab } from '@gitbeaker/core'; -import { JsonValue } from '@backstage/config'; +import { Config, JsonValue } from '@backstage/config'; +import { Logger } from 'winston'; import { initRepoAndPush } from './helpers'; import { RequiredTemplateValues } from '../templater'; +import { + GitLabIntegrationConfig, + readGitLabIntegrationConfigs, +} from '@backstage/integration'; export class GitlabPublisher implements PublisherBase { - private readonly client: Gitlab; - private readonly token: string; + private readonly integrations: GitLabIntegrationConfig[]; + private readonly scaffolderToken: string | undefined; + private readonly logger: Logger; - constructor(client: Gitlab, token: string) { - this.client = client; - this.token = token; + constructor(config: Config, { logger }: { logger: Logger }) { + this.logger = logger; + this.integrations = readGitLabIntegrationConfigs( + config.getOptionalConfigArray('integrations.gitlab') ?? [], + ); + + if (!this.integrations.length) { + this.logger.warn( + 'Integrations for GitLab in Scaffolder are not set. This will cause errors in a future release. Please migrate to using integrations config and specifying tokens under hostnames', + ); + } + + this.scaffolderToken = config.getOptionalString( + 'scaffolder.gitlab.api.token', + ); + + if (this.scaffolderToken) { + this.logger.warn( + "DEPRECATION: Using the token format under 'scaffolder.gitlab.api.token' will not be respected in future releases. Please consider using integrations config instead", + ); + } } async publish({ values, directory, - logger, }: PublisherOptions): Promise { const remoteUrl = await this.createRemote(values); diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/types.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/types.ts index bc6b63cc57..807d7c82cf 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/types.ts @@ -35,7 +35,6 @@ export type PublisherBase = { export type PublisherOptions = { values: RequiredTemplateValues & Record; - logger: Logger; directory: string; };