diff --git a/.changeset/spicy-lions-dream.md b/.changeset/spicy-lions-dream.md new file mode 100644 index 0000000000..939d12dd30 --- /dev/null +++ b/.changeset/spicy-lions-dream.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +Add Github repository support for squash merge commit title and message options diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index fd4169fbc4..66757a01cd 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -195,6 +195,12 @@ export function createGithubRepoCreateAction(options: { gitAuthorEmail?: string | undefined; allowRebaseMerge?: boolean | undefined; allowSquashMerge?: boolean | undefined; + squashMergeCommitTitle?: 'PR_TITLE' | 'COMMIT_OR_PR_TITLE' | undefined; + squashMergeCommitMessage?: + | 'PR_BODY' + | 'COMMIT_MESSAGES' + | 'BLANK' + | undefined; allowMergeCommit?: boolean | undefined; allowAutoMerge?: boolean | undefined; requireCodeOwnerReviews?: boolean | undefined; @@ -383,6 +389,12 @@ export function createPublishGithubAction(options: { gitAuthorEmail?: string | undefined; allowRebaseMerge?: boolean | undefined; allowSquashMerge?: boolean | undefined; + squashMergeCommitTitle?: 'PR_TITLE' | 'COMMIT_OR_PR_TITLE' | undefined; + squashMergeCommitMessage?: + | 'PR_BODY' + | 'COMMIT_MESSAGES' + | 'BLANK' + | undefined; allowMergeCommit?: boolean | undefined; allowAutoMerge?: boolean | undefined; sourcePath?: string | undefined; diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.test.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.test.ts index 3c37f28ccd..824db27e84 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.test.ts @@ -106,6 +106,8 @@ describe('github:repo:create', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', + squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -126,6 +128,8 @@ describe('github:repo:create', () => { private: false, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', + squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -147,6 +151,8 @@ describe('github:repo:create', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', + squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -169,6 +175,8 @@ describe('github:repo:create', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_message: 'COMMIT_MESSAGES', + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -194,6 +202,8 @@ describe('github:repo:create', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_message: 'COMMIT_MESSAGES', + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -222,6 +232,8 @@ describe('github:repo:create', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', + squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -242,6 +254,8 @@ describe('github:repo:create', () => { private: false, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', + squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -263,6 +277,8 @@ describe('github:repo:create', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', + squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -285,6 +301,8 @@ describe('github:repo:create', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_message: 'COMMIT_MESSAGES', + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -310,6 +328,8 @@ describe('github:repo:create', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_message: 'COMMIT_MESSAGES', + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.ts index 47665ef40b..f41150b504 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/githubRepoCreate.ts @@ -49,6 +49,8 @@ export function createGithubRepoCreateAction(options: { gitAuthorEmail?: string; allowRebaseMerge?: boolean; allowSquashMerge?: boolean; + squashMergeCommitTitle?: 'PR_TITLE' | 'COMMIT_OR_PR_TITLE'; + squashMergeCommitMessage?: 'PR_BODY' | 'COMMIT_MESSAGES' | 'BLANK'; allowMergeCommit?: boolean; allowAutoMerge?: boolean; requireCodeOwnerReviews?: boolean; @@ -103,6 +105,8 @@ export function createGithubRepoCreateAction(options: { deleteBranchOnMerge: inputProps.deleteBranchOnMerge, allowMergeCommit: inputProps.allowMergeCommit, allowSquashMerge: inputProps.allowSquashMerge, + squashMergeCommitTitle: inputProps.squashMergeCommitTitle, + squashMergeCommitMessage: inputProps.squashMergeCommitMessage, allowRebaseMerge: inputProps.allowRebaseMerge, allowAutoMerge: inputProps.allowAutoMerge, collaborators: inputProps.collaborators, @@ -131,6 +135,8 @@ export function createGithubRepoCreateAction(options: { deleteBranchOnMerge = false, allowMergeCommit = true, allowSquashMerge = true, + squashMergeCommitTitle = 'COMMIT_OR_PR_TITLE', + squashMergeCommitMessage = 'COMMIT_MESSAGES', allowRebaseMerge = true, allowAutoMerge = false, collaborators, @@ -165,6 +171,8 @@ export function createGithubRepoCreateAction(options: { deleteBranchOnMerge, allowMergeCommit, allowSquashMerge, + squashMergeCommitTitle, + squashMergeCommitMessage, allowRebaseMerge, allowAutoMerge, access, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts index f2282dc2da..9caee49f98 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts @@ -102,6 +102,8 @@ export async function createGithubRepoWithCollaboratorsAndTopics( deleteBranchOnMerge: boolean, allowMergeCommit: boolean, allowSquashMerge: boolean, + squashMergeCommitTitle: 'PR_TITLE' | 'COMMIT_OR_PR_TITLE' | undefined, + squashMergeCommitMessage: 'PR_BODY' | 'COMMIT_MESSAGES' | 'BLANK' | undefined, allowRebaseMerge: boolean, allowAutoMerge: boolean, access: string | undefined, @@ -144,6 +146,8 @@ export async function createGithubRepoWithCollaboratorsAndTopics( delete_branch_on_merge: deleteBranchOnMerge, allow_merge_commit: allowMergeCommit, allow_squash_merge: allowSquashMerge, + squash_merge_commit_title: squashMergeCommitTitle, + squash_merge_commit_message: squashMergeCommitMessage, allow_rebase_merge: allowRebaseMerge, allow_auto_merge: allowAutoMerge, homepage: homepage, @@ -158,6 +162,8 @@ export async function createGithubRepoWithCollaboratorsAndTopics( delete_branch_on_merge: deleteBranchOnMerge, allow_merge_commit: allowMergeCommit, allow_squash_merge: allowSquashMerge, + squash_merge_commit_title: squashMergeCommitTitle, + squash_merge_commit_message: squashMergeCommitMessage, allow_rebase_merge: allowRebaseMerge, allow_auto_merge: allowAutoMerge, homepage: homepage, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts index 19c3ea5983..3fc7126754 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/inputProperties.ts @@ -94,6 +94,17 @@ const allowSquashMerge = { type: 'boolean', description: `Allow squash merges. The default value is 'true'`, }; +const squashMergeCommitTitle = { + title: 'Default squash merge commit title', + enum: ['PR_TITLE', 'COMMIT_OR_PR_TITLE'], + description: `Sets the default value for a squash merge commit title. The default value is 'COMMIT_OR_PR_TITLE'`, +}; +const squashMergeCommitMessage = { + title: 'Default squash merge commit message', + enum: ['PR_BODY', 'COMMIT_MESSAGES', 'BLANK'], + description: `Sets the default value for a squash merge commit message. The default value is 'COMMIT_MESSAGES'`, +}; + const allowRebaseMerge = { title: 'Allow Rebase Merges', type: 'boolean', @@ -218,6 +229,8 @@ export { access }; export { allowMergeCommit }; export { allowRebaseMerge }; export { allowSquashMerge }; +export { squashMergeCommitTitle }; +export { squashMergeCommitMessage }; export { allowAutoMerge }; export { collaborators }; export { defaultBranch }; 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 68e6521187..e4c92c624e 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 @@ -111,6 +111,8 @@ describe('publish:github', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', + squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -131,6 +133,8 @@ describe('publish:github', () => { private: false, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', + squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -152,6 +156,8 @@ describe('publish:github', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', + squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -174,6 +180,8 @@ describe('publish:github', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_message: 'COMMIT_MESSAGES', + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -199,6 +207,8 @@ describe('publish:github', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_message: 'COMMIT_MESSAGES', + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -227,6 +237,8 @@ describe('publish:github', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', + squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -247,6 +259,8 @@ describe('publish:github', () => { private: false, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', + squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -268,6 +282,8 @@ describe('publish:github', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', + squash_merge_commit_message: 'COMMIT_MESSAGES', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -290,6 +306,8 @@ describe('publish:github', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_message: 'COMMIT_MESSAGES', + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, @@ -315,6 +333,8 @@ describe('publish:github', () => { private: true, delete_branch_on_merge: false, allow_squash_merge: true, + squash_merge_commit_message: 'COMMIT_MESSAGES', + squash_merge_commit_title: 'COMMIT_OR_PR_TITLE', allow_merge_commit: true, allow_rebase_merge: true, allow_auto_merge: false, 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 2122c79711..5430f30657 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/publish/github.ts @@ -57,6 +57,8 @@ export function createPublishGithubAction(options: { gitAuthorEmail?: string; allowRebaseMerge?: boolean; allowSquashMerge?: boolean; + squashMergeCommitTitle?: 'PR_TITLE' | 'COMMIT_OR_PR_TITLE'; + squashMergeCommitMessage?: 'PR_BODY' | 'COMMIT_MESSAGES' | 'BLANK'; allowMergeCommit?: boolean; allowAutoMerge?: boolean; sourcePath?: string; @@ -123,6 +125,8 @@ export function createPublishGithubAction(options: { gitAuthorEmail: inputProps.gitAuthorEmail, allowMergeCommit: inputProps.allowMergeCommit, allowSquashMerge: inputProps.allowSquashMerge, + squashMergeCommitTitle: inputProps.squashMergeCommitTitle, + squashMergeCommitMessage: inputProps.squashMergeCommitMessage, allowRebaseMerge: inputProps.allowRebaseMerge, allowAutoMerge: inputProps.allowAutoMerge, sourcePath: inputProps.sourcePath, @@ -164,6 +168,8 @@ export function createPublishGithubAction(options: { gitAuthorEmail, allowMergeCommit = true, allowSquashMerge = true, + squashMergeCommitTitle = 'COMMIT_OR_PR_TITLE', + squashMergeCommitMessage = 'COMMIT_MESSAGES', allowRebaseMerge = true, allowAutoMerge = false, collaborators, @@ -198,6 +204,8 @@ export function createPublishGithubAction(options: { deleteBranchOnMerge, allowMergeCommit, allowSquashMerge, + squashMergeCommitTitle, + squashMergeCommitMessage, allowRebaseMerge, allowAutoMerge, access,