diff --git a/.changeset/long-keys-heal.md b/.changeset/long-keys-heal.md new file mode 100644 index 0000000000..c70600d439 --- /dev/null +++ b/.changeset/long-keys-heal.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Instead of failing, warn when you need to pay for GitHub Pro. diff --git a/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts index 59d288eedc..8531dbcdc8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/stages/publish/helpers.ts @@ -82,42 +82,45 @@ export const enableBranchProtectionOnDefaultRepoBranch = async ({ owner, logger, }: BranchProtectionOptions): Promise => { - const tryOnce = () => { - return client.repos.updateBranchProtection({ - mediaType: { - /** - * 👇 we need this preview because allowing a custom - * reviewer count on branch protection is a preview - * feature - * - * More here: https://docs.github.com/en/rest/overview/api-previews#require-multiple-approving-reviews - */ - previews: ['luke-cage-preview'], - }, - owner, - repo: repoName, - branch: 'master', - required_status_checks: { strict: true, contexts: [] }, - restrictions: null, - enforce_admins: true, - required_pull_request_reviews: { required_approving_review_count: 1 }, - }); + const tryOnce = async () => { + try { + await client.repos.updateBranchProtection({ + mediaType: { + /** + * 👇 we need this preview because allowing a custom + * reviewer count on branch protection is a preview + * feature + * + * More here: https://docs.github.com/en/rest/overview/api-previews#require-multiple-approving-reviews + */ + previews: ['luke-cage-preview'], + }, + owner, + repo: repoName, + branch: 'master', + required_status_checks: { strict: true, contexts: [] }, + restrictions: null, + enforce_admins: true, + required_pull_request_reviews: { required_approving_review_count: 1 }, + }); + } 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', + ); + } else { + throw e; + } + } }; 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; }