From 5fc87a693c49ab26d7cc2fd16bda09b28aea9b84 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 20 May 2021 15:41:30 +0200 Subject: [PATCH] fix(scaffolder): added some logging if we can't enable branch protection for free repos Signed-off-by: blam --- .../scaffolder/actions/builtin/publish/github.ts | 1 + .../src/scaffolder/stages/publish/github.ts | 1 + .../src/scaffolder/stages/publish/helpers.ts | 13 +++++++++++++ 3 files changed, 15 insertions(+) diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts index e56c94a5b0..a3befa0dfe 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts @@ -233,6 +233,7 @@ export function createPublishGithubAction(options: { owner, client, repoName: newRepo.name, + logger: ctx.logger, }); } catch (e) { throw new Error( diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts index 2647284698..d859d97dc3 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/github.ts @@ -109,6 +109,7 @@ export class GithubPublisher implements PublisherBase { owner, client, repoName: name, + logger, }); } catch (e) { throw new Error(`Failed to add branch protection to '${name}', ${e}`); diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts index d373189ec6..59d288eedc 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts @@ -73,12 +73,14 @@ type BranchProtectionOptions = { client: Octokit; owner: string; repoName: string; + logger: Logger; }; export const enableBranchProtectionOnDefaultRepoBranch = async ({ repoName, client, owner, + logger, }: BranchProtectionOptions): Promise => { const tryOnce = () => { return client.repos.updateBranchProtection({ @@ -105,6 +107,17 @@ export const enableBranchProtectionOnDefaultRepoBranch = async ({ try { await tryOnce(); } catch (e) { + if ( + e.message.includes( + 'Upgrade to GitHub Pro or make this repository public to enable this feature', + ) + ) { + logger.warn( + 'Branch protection was not enabled as it requires GitHub Pro for private repositories', + ); + return; + } + if (!e.message.includes('Branch not found')) { throw e; }