From 411c87960c5563e97a2a3768394dea13d0195e4f Mon Sep 17 00:00:00 2001 From: Brett Wright Date: Wed, 12 Mar 2025 08:55:36 +1100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20support=20for=20allowing=20br?= =?UTF-8?q?anch=20updates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit adds support for allowing branch updates when creating a GitHub repository. It introduces a new `allowUpdateBranch` property to the `createGithubRepoCreateAction` function, allowing users to specify whether updates to branches should be allowed. This enhancement provides more flexibility and control over repository management. Signed-off-by: Brett Wright --- .changeset/silent-snails-lie.md | 5 + .../report.api.md | 2 + .../src/actions/github.test.ts | 75 ++++++++--- .../src/actions/github.ts | 4 + .../actions/githubRepoCreate.examples.test.ts | 124 ++++++++++++++++++ .../src/actions/githubRepoCreate.examples.ts | 15 +++ .../src/actions/githubRepoCreate.test.ts | 77 ++++++++--- .../src/actions/githubRepoCreate.ts | 4 + .../src/actions/helpers.ts | 3 + .../src/actions/inputProperties.ts | 7 + 10 files changed, 284 insertions(+), 32 deletions(-) create mode 100644 .changeset/silent-snails-lie.md diff --git a/.changeset/silent-snails-lie.md b/.changeset/silent-snails-lie.md new file mode 100644 index 0000000000..87ae46afa6 --- /dev/null +++ b/.changeset/silent-snails-lie.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-github': patch +--- + +Add support to github:repo:create to allow branch updates diff --git a/plugins/scaffolder-backend-module-github/report.api.md b/plugins/scaffolder-backend-module-github/report.api.md index f1b7f98a30..2d49e1a5bd 100644 --- a/plugins/scaffolder-backend-module-github/report.api.md +++ b/plugins/scaffolder-backend-module-github/report.api.md @@ -210,6 +210,7 @@ export function createGithubRepoCreateAction(options: { squashMergeCommitMessage?: 'PR_BODY' | 'COMMIT_MESSAGES' | 'BLANK'; allowMergeCommit?: boolean; allowAutoMerge?: boolean; + allowUpdateBranch?: boolean; requireCodeOwnerReviews?: boolean; bypassPullRequestAllowances?: { users?: string[]; @@ -355,6 +356,7 @@ export function createPublishGithubAction(options: { squashMergeCommitMessage?: 'PR_BODY' | 'COMMIT_MESSAGES' | 'BLANK'; allowMergeCommit?: boolean; allowAutoMerge?: boolean; + allowUpdateBranch?: boolean; sourcePath?: string; bypassPullRequestAllowances?: | { diff --git a/plugins/scaffolder-backend-module-github/src/actions/github.test.ts b/plugins/scaffolder-backend-module-github/src/actions/github.test.ts index 2f629622d0..30945d92f2 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/github.test.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/github.test.ts @@ -189,6 +189,12 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + custom_properties: undefined, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: undefined, visibility: 'private', }); @@ -211,6 +217,12 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + custom_properties: undefined, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: undefined, visibility: 'public', }); @@ -234,6 +246,7 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, visibility: 'private', }); @@ -258,10 +271,13 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + customElements: undefined, visibility: 'private', - has_wiki: true, - has_projects: true, - has_issues: true, + has_wiki: undefined, + has_projects: undefined, + has_issues: undefined, + homepage: 'https://example.com', }); await action.handler({ @@ -285,10 +301,13 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + custom_properties: undefined, visibility: 'private', - has_wiki: false, - has_projects: false, - has_issues: false, + has_wiki: undefined, + has_projects: undefined, + has_issues: undefined, + homepage: 'https://example.com', }); await action.handler({ @@ -314,11 +333,13 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + custom_properties: undefined, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: 'https://example.com', visibility: 'private', - custom_properties: { - foo: 'bar', - foo2: 'bar2', - }, }); }); @@ -345,6 +366,11 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: undefined, }); await action.handler({ @@ -367,6 +393,11 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: undefined, }); await action.handler({ @@ -390,6 +421,10 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, }); await action.handler({ @@ -414,9 +449,10 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, - has_wiki: true, - has_projects: true, - has_issues: true, + allow_update_branch: false, + has_wiki: undefined, + has_projects: undefined, + has_issues: undefined, }); await action.handler({ @@ -441,9 +477,11 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, - has_wiki: false, - has_projects: false, - has_issues: false, + allow_update_branch: false, + has_wiki: undefined, + has_projects: undefined, + has_issues: undefined, + homepage: 'https://example.com', }); // Custom properties on user repos should be ignored @@ -471,6 +509,11 @@ describe('publish:github', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: 'https://example.com', }); }); diff --git a/plugins/scaffolder-backend-module-github/src/actions/github.ts b/plugins/scaffolder-backend-module-github/src/actions/github.ts index 02b1fbbe32..fd858f0830 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/github.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/github.ts @@ -65,6 +65,7 @@ export function createPublishGithubAction(options: { squashMergeCommitMessage?: 'PR_BODY' | 'COMMIT_MESSAGES' | 'BLANK'; allowMergeCommit?: boolean; allowAutoMerge?: boolean; + allowUpdateBranch?: boolean; sourcePath?: string; bypassPullRequestAllowances?: | { @@ -156,6 +157,7 @@ export function createPublishGithubAction(options: { squashMergeCommitMessage: inputProps.squashMergeCommitMessage, allowRebaseMerge: inputProps.allowRebaseMerge, allowAutoMerge: inputProps.allowAutoMerge, + allowUpdateBranch: inputProps.allowUpdateBranch, sourcePath: inputProps.sourcePath, collaborators: inputProps.collaborators, hasProjects: inputProps.hasProjects, @@ -210,6 +212,7 @@ export function createPublishGithubAction(options: { squashMergeCommitMessage = 'COMMIT_MESSAGES', allowRebaseMerge = true, allowAutoMerge = false, + allowUpdateBranch = false, collaborators, hasProjects = undefined, hasWiki = undefined, @@ -258,6 +261,7 @@ export function createPublishGithubAction(options: { squashMergeCommitMessage, allowRebaseMerge, allowAutoMerge, + allowUpdateBranch, access, collaborators, hasProjects, diff --git a/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.examples.test.ts b/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.examples.test.ts index 1a81a54c64..8694011133 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.examples.test.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.examples.test.ts @@ -129,6 +129,12 @@ describe('github:repo:create examples', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + custom_properties: undefined, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: undefined, visibility: 'private', }); }); @@ -157,6 +163,11 @@ describe('github:repo:create examples', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: undefined, visibility: 'private', }); }); @@ -177,6 +188,7 @@ describe('github:repo:create examples', () => { name: 'repo', org: 'owner', private: true, + description: undefined, delete_branch_on_merge: false, allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', @@ -184,9 +196,13 @@ describe('github:repo:create examples', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + custom_properties: undefined, visibility: 'private', has_issues: false, // disable issues + has_projects: undefined, has_wiki: false, // disable wiki + homepage: undefined, }); }); @@ -219,6 +235,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -260,6 +278,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -301,6 +321,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -342,6 +364,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -383,6 +407,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: false, allow_rebase_merge: false, allow_auto_merge: false, @@ -424,6 +450,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'pull_request_title', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -465,6 +493,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'blank', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -506,6 +536,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: true, @@ -547,6 +579,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -588,6 +622,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -629,6 +665,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -670,6 +708,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -711,6 +751,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -752,6 +794,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -793,6 +837,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -834,6 +880,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -875,6 +923,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -916,6 +966,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -957,6 +1009,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -998,6 +1052,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1039,6 +1095,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1080,6 +1138,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: false, allow_rebase_merge: true, allow_auto_merge: false, @@ -1121,6 +1181,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1162,6 +1224,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1203,6 +1267,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1244,6 +1310,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1285,6 +1353,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1326,6 +1396,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1367,6 +1439,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1408,6 +1482,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1449,6 +1525,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1490,6 +1568,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1531,6 +1611,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1572,6 +1654,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1613,6 +1697,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1654,6 +1740,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1695,6 +1783,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1736,6 +1826,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1777,6 +1869,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'pull_request_description', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: false, allow_rebase_merge: false, allow_auto_merge: false, @@ -1818,6 +1912,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: false, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: false, allow_rebase_merge: true, allow_auto_merge: false, @@ -1859,6 +1955,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1900,6 +1998,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1941,6 +2041,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -1982,6 +2084,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -2023,6 +2127,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -2064,6 +2170,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -2105,6 +2213,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -2146,6 +2256,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: false, allow_rebase_merge: true, allow_auto_merge: true, @@ -2187,6 +2299,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -2228,6 +2342,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -2269,6 +2385,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -2310,6 +2428,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -2351,6 +2471,8 @@ describe('github:repo:create examples', () => { allow_squash_merge: true, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', + allow_update_branch: false, + custom_properties: undefined, allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -2390,6 +2512,8 @@ describe('github:repo:create examples', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + allow_update_branch: false, + custom_properties: undefined, squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, diff --git a/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.examples.ts b/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.examples.ts index 1c1f1ca5d2..ce39e7510d 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.examples.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.examples.ts @@ -991,4 +991,19 @@ export const examples: TemplateExample[] = [ ], }), }, + { + description: 'Allow branch updates.', + example: yaml.stringify({ + steps: [ + { + action: 'github:repo:create', + name: 'Create a new GitHub repository allowing branch updates', + input: { + repoUrl: 'github.com?repo=repo&owner=owner', + allowUpdateBranch: true, + }, + }, + ], + }), + }, ]; diff --git a/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.test.ts b/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.test.ts index 864c5b729f..bf340a485e 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.test.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.test.ts @@ -137,6 +137,11 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: undefined, visibility: 'private', }); @@ -159,6 +164,12 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + custom_properties: undefined, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: undefined, visibility: 'public', }); @@ -182,6 +193,10 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, visibility: 'private', }); @@ -206,10 +221,13 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + custom_properties: undefined, visibility: 'private', - has_wiki: true, - has_projects: true, - has_issues: true, + has_wiki: undefined, + has_projects: undefined, + has_issues: undefined, + homepage: 'https://example.com', }); await action.handler({ @@ -233,10 +251,12 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + custom_properties: undefined, visibility: 'private', - has_wiki: false, - has_projects: false, - has_issues: false, + has_wiki: undefined, + has_projects: undefined, + has_issues: undefined, }); await action.handler({ @@ -262,11 +282,13 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + custom_properties: undefined, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: 'https://example.com', visibility: 'private', - custom_properties: { - foo: 'bar', - foo2: 'bar2', - }, }); }); @@ -293,6 +315,11 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: undefined, }); await action.handler({ @@ -315,6 +342,11 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: undefined, }); await action.handler({ @@ -338,6 +370,10 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, }); await action.handler({ @@ -362,9 +398,11 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, - has_wiki: true, - has_projects: true, - has_issues: true, + allow_update_branch: false, + has_wiki: undefined, + has_projects: undefined, + has_issues: undefined, + homepage: 'https://example.com', }); await action.handler({ @@ -389,9 +427,11 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, - has_wiki: false, - has_projects: false, - has_issues: false, + allow_update_branch: false, + has_wiki: undefined, + has_projects: undefined, + has_issues: undefined, + homepage: 'https://example.com', }); // Custom properties on user repos should be ignored @@ -419,6 +459,11 @@ describe('github:repo:create', () => { allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, + allow_update_branch: false, + has_issues: undefined, + has_projects: undefined, + has_wiki: undefined, + homepage: 'https://example.com', }); }); diff --git a/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.ts b/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.ts index 91b0580da9..6899b3dff8 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.ts @@ -55,6 +55,7 @@ export function createGithubRepoCreateAction(options: { squashMergeCommitMessage?: 'PR_BODY' | 'COMMIT_MESSAGES' | 'BLANK'; allowMergeCommit?: boolean; allowAutoMerge?: boolean; + allowUpdateBranch?: boolean; requireCodeOwnerReviews?: boolean; bypassPullRequestAllowances?: { users?: string[]; @@ -130,6 +131,7 @@ export function createGithubRepoCreateAction(options: { squashMergeCommitMessage: inputProps.squashMergeCommitMessage, allowRebaseMerge: inputProps.allowRebaseMerge, allowAutoMerge: inputProps.allowAutoMerge, + allowUpdateBranch: inputProps.allowUpdateBranch, collaborators: inputProps.collaborators, hasProjects: inputProps.hasProjects, hasWiki: inputProps.hasWiki, @@ -167,6 +169,7 @@ export function createGithubRepoCreateAction(options: { squashMergeCommitMessage = 'COMMIT_MESSAGES', allowRebaseMerge = true, allowAutoMerge = false, + allowUpdateBranch = false, collaborators, hasProjects = undefined, hasWiki = undefined, @@ -213,6 +216,7 @@ export function createGithubRepoCreateAction(options: { squashMergeCommitMessage, allowRebaseMerge, allowAutoMerge, + allowUpdateBranch, access, collaborators, hasProjects, diff --git a/plugins/scaffolder-backend-module-github/src/actions/helpers.ts b/plugins/scaffolder-backend-module-github/src/actions/helpers.ts index 8e6e521c29..db3aa03679 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/helpers.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/helpers.ts @@ -44,6 +44,7 @@ export async function createGithubRepoWithCollaboratorsAndTopics( squashMergeCommitMessage: 'PR_BODY' | 'COMMIT_MESSAGES' | 'BLANK' | undefined, allowRebaseMerge: boolean, allowAutoMerge: boolean, + allowUpdateBranch: boolean, access: string | undefined, collaborators: | ( @@ -103,6 +104,7 @@ export async function createGithubRepoWithCollaboratorsAndTopics( squash_merge_commit_message: squashMergeCommitMessage, allow_rebase_merge: allowRebaseMerge, allow_auto_merge: allowAutoMerge, + allow_update_branch: allowUpdateBranch, homepage: homepage, has_projects: hasProjects, has_wiki: hasWiki, @@ -121,6 +123,7 @@ export async function createGithubRepoWithCollaboratorsAndTopics( squash_merge_commit_message: squashMergeCommitMessage, allow_rebase_merge: allowRebaseMerge, allow_auto_merge: allowAutoMerge, + allow_update_branch: allowUpdateBranch, homepage: homepage, has_projects: hasProjects, has_wiki: hasWiki, diff --git a/plugins/scaffolder-backend-module-github/src/actions/inputProperties.ts b/plugins/scaffolder-backend-module-github/src/actions/inputProperties.ts index 29e426d2b9..cac93ec7c6 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/inputProperties.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/inputProperties.ts @@ -111,6 +111,12 @@ const allowSquashMerge = { default: true, description: 'Allow squash merges. The default value is `true`', }; +const allowUpdateBranch = { + title: 'Allow Update Branch', + type: 'boolean', + default: false, + description: 'Allow branch to be updated. The default value is `false`', +}; const squashMergeCommitTitle = { title: 'Default squash merge commit title', enum: ['PR_TITLE', 'COMMIT_OR_PR_TITLE'], @@ -364,6 +370,7 @@ export { allowSquashMerge }; export { squashMergeCommitTitle }; export { squashMergeCommitMessage }; export { allowAutoMerge }; +export { allowUpdateBranch }; export { collaborators }; export { defaultBranch }; export { deleteBranchOnMerge };