diff --git a/.changeset/twenty-fireants-turn.md b/.changeset/twenty-fireants-turn.md new file mode 100644 index 0000000000..fd9dc17530 --- /dev/null +++ b/.changeset/twenty-fireants-turn.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Allow passing more repo configuration for `publish:github` action diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 3bc03c4840..b18e199f40 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -233,6 +233,10 @@ export function createPublishGithubAction(options: { description?: string | undefined; access?: string | undefined; defaultBranch?: string | undefined; + deleteBranchOnMerge?: boolean | undefined; + allowRebaseMerge?: boolean | undefined; + allowSquashMerge?: boolean | undefined; + allowMergeCommit?: boolean | undefined; sourcePath?: string | undefined; requireCodeOwnerReviews?: boolean | undefined; repoVisibility?: 'internal' | 'private' | 'public' | undefined; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts index 1e58635bbe..ec564e93dc 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.test.ts @@ -88,6 +88,10 @@ describe('publish:github', () => { name: 'repo', org: 'owner', private: true, + delete_branch_on_merge: false, + allow_squash_merge: true, + allow_merge_commit: true, + allow_rebase_merge: true, visibility: 'private', }); @@ -103,6 +107,10 @@ describe('publish:github', () => { name: 'repo', org: 'owner', private: false, + delete_branch_on_merge: false, + allow_squash_merge: true, + allow_merge_commit: true, + allow_rebase_merge: true, visibility: 'public', }); }); @@ -123,6 +131,10 @@ describe('publish:github', () => { description: 'description', name: 'repo', private: true, + delete_branch_on_merge: false, + allow_squash_merge: true, + allow_merge_commit: true, + allow_rebase_merge: true, }); await action.handler({ @@ -138,6 +150,10 @@ describe('publish:github', () => { description: 'description', name: 'repo', private: false, + delete_branch_on_merge: false, + allow_squash_merge: true, + allow_merge_commit: true, + allow_rebase_merge: true, }); }); 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 926a63915a..7f1e7a1c93 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts @@ -46,6 +46,10 @@ export function createPublishGithubAction(options: { description?: string; access?: string; defaultBranch?: string; + deleteBranchOnMerge?: boolean; + allowRebaseMerge?: boolean; + allowSquashMerge?: boolean; + allowMergeCommit?: boolean; sourcePath?: string; requireCodeOwnerReviews?: boolean; repoVisibility?: 'private' | 'internal' | 'public'; @@ -94,6 +98,26 @@ export function createPublishGithubAction(options: { type: 'string', description: `Sets the default branch on the repository. The default value is 'master'`, }, + deleteBranchOnMerge: { + title: 'Delete Branch On Merge', + type: 'boolean', + description: `Delete the branch after merging the PR. The default value is 'false'`, + }, + allowMergeCommit: { + title: 'Allow Merge Commits', + type: 'boolean', + description: `Allow merge commits. The default value is 'true'`, + }, + allowSquashMerge: { + title: 'Allow Squash Merges', + type: 'boolean', + description: `Allow squash merges. The default value is 'true'`, + }, + allowRebaseMerge: { + title: 'Allow Rebase Merges', + type: 'boolean', + description: `Allow rebase merges. The default value is 'true'`, + }, sourcePath: { title: 'Source Path', description: @@ -156,6 +180,10 @@ export function createPublishGithubAction(options: { requireCodeOwnerReviews = false, repoVisibility = 'private', defaultBranch = 'master', + deleteBranchOnMerge = false, + allowMergeCommit = true, + allowSquashMerge = true, + allowRebaseMerge = true, collaborators, topics, token: providedToken, @@ -188,11 +216,19 @@ export function createPublishGithubAction(options: { private: repoVisibility === 'private', visibility: repoVisibility, description: description, + delete_branch_on_merge: deleteBranchOnMerge, + allow_merge_commit: allowMergeCommit, + allow_squash_merge: allowSquashMerge, + allow_rebase_merge: allowRebaseMerge, }) : client.rest.repos.createForAuthenticatedUser({ name: repo, private: repoVisibility === 'private', description: description, + delete_branch_on_merge: deleteBranchOnMerge, + allow_merge_commit: allowMergeCommit, + allow_squash_merge: allowSquashMerge, + allow_rebase_merge: allowRebaseMerge, }); const { data: newRepo } = await repoCreationPromise;