Add option to require Github conversation resolution

Signed-off-by: Kyle Leonhard <kyle.leonhard@snowflake.com>
This commit is contained in:
Kyle Leonhard
2022-12-13 15:54:23 -08:00
parent 28e40488ec
commit 7ef9bf8c6e
9 changed files with 57 additions and 0 deletions
+3
View File
@@ -207,6 +207,7 @@ export function createGithubRepoCreateAction(options: {
| undefined;
requiredStatusCheckContexts?: string[] | undefined;
requireBranchesToBeUpToDate?: boolean | undefined;
requiredConversationResolution?: boolean | undefined;
repoVisibility?: 'internal' | 'private' | 'public' | undefined;
collaborators?:
| (
@@ -253,6 +254,7 @@ export function createGithubRepoPushAction(options: {
| undefined;
requiredStatusCheckContexts?: string[] | undefined;
requireBranchesToBeUpToDate?: boolean | undefined;
requiredConversationResolution?: boolean | undefined;
sourcePath?: string | undefined;
token?: string | undefined;
}>;
@@ -392,6 +394,7 @@ export function createPublishGithubAction(options: {
dismissStaleReviews?: boolean | undefined;
requiredStatusCheckContexts?: string[] | undefined;
requireBranchesToBeUpToDate?: boolean | undefined;
requiredConversationResolution?: boolean | undefined;
repoVisibility?: 'internal' | 'private' | 'public' | undefined;
collaborators?:
| (
@@ -59,6 +59,7 @@ export function createGithubRepoCreateAction(options: {
};
requiredStatusCheckContexts?: string[];
requireBranchesToBeUpToDate?: boolean;
requiredConversationResolution?: boolean;
repoVisibility?: 'private' | 'internal' | 'public';
collaborators?: Array<
| {
@@ -93,6 +94,8 @@ export function createGithubRepoCreateAction(options: {
bypassPullRequestAllowances: inputProps.bypassPullRequestAllowances,
requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts,
requireBranchesToBeUpToDate: inputProps.requireBranchesToBeUpToDate,
requiredConversationResolution:
inputProps.requiredConversationResolution,
repoVisibility: inputProps.repoVisibility,
deleteBranchOnMerge: inputProps.deleteBranchOnMerge,
allowMergeCommit: inputProps.allowMergeCommit,
@@ -284,6 +284,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -305,6 +306,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: true,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -326,6 +328,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -350,6 +353,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -371,6 +375,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -392,6 +397,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: false,
dismissStaleReviews: false,
});
@@ -416,6 +422,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -426,6 +433,7 @@ describe('github:repo:push', () => {
...mockContext.input,
requiredStatusCheckContexts: ['statusCheck'],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
},
});
@@ -438,6 +446,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: ['statusCheck'],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -460,6 +469,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: ['statusCheck'],
requireBranchesToBeUpToDate: false,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -470,6 +480,7 @@ describe('github:repo:push', () => {
...mockContext.input,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
},
});
@@ -482,6 +493,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -525,6 +537,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -546,6 +559,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: true,
});
@@ -567,6 +581,7 @@ describe('github:repo:push', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -59,6 +59,7 @@ export function createGithubRepoPushAction(options: {
| undefined;
requiredStatusCheckContexts?: string[];
requireBranchesToBeUpToDate?: boolean;
requiredConversationResolution?: boolean;
sourcePath?: string;
token?: string;
}>({
@@ -76,6 +77,8 @@ export function createGithubRepoPushAction(options: {
requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts,
bypassPullRequestAllowances: inputProps.bypassPullRequestAllowances,
requireBranchesToBeUpToDate: inputProps.requireBranchesToBeUpToDate,
requiredConversationResolution:
inputProps.requiredConversationResolution,
defaultBranch: inputProps.defaultBranch,
protectDefaultBranch: inputProps.protectDefaultBranch,
protectEnforceAdmins: inputProps.protectEnforceAdmins,
@@ -108,6 +111,7 @@ export function createGithubRepoPushAction(options: {
bypassPullRequestAllowances,
requiredStatusCheckContexts = [],
requireBranchesToBeUpToDate = true,
requiredConversationResolution = false,
token: providedToken,
} = ctx.input;
@@ -146,6 +150,7 @@ export function createGithubRepoPushAction(options: {
bypassPullRequestAllowances,
requiredStatusCheckContexts,
requireBranchesToBeUpToDate,
requiredConversationResolution,
config,
ctx.logger,
gitCommitMessage,
@@ -258,6 +258,7 @@ export async function initRepoPushAndProtect(
| undefined,
requiredStatusCheckContexts: string[],
requireBranchesToBeUpToDate: boolean,
requiredConversationResolution: boolean,
config: Config,
logger: any,
gitCommitMessage?: string,
@@ -303,6 +304,7 @@ export async function initRepoPushAndProtect(
requireCodeOwnerReviews,
requiredStatusCheckContexts,
requireBranchesToBeUpToDate,
requiredConversationResolution,
enforceAdmins: protectEnforceAdmins,
dismissStaleReviews: dismissStaleReviews,
});
@@ -58,6 +58,12 @@ const requireBranchesToBeUpToDate = {
description: `Require branches to be up to date before merging. The default value is 'true'`,
type: 'boolean',
};
const requiredConversationResolution = {
title: 'Required Conversation Resolution',
description:
'Requires all conversations on code to be resolved before a pull request can be merged into this branch',
type: 'boolean',
};
const repoVisibility = {
title: 'Repository Visibility',
type: 'string',
@@ -216,6 +222,7 @@ export { requireCodeOwnerReviews };
export { dismissStaleReviews };
export { requiredStatusCheckContexts };
export { requireBranchesToBeUpToDate };
export { requiredConversationResolution };
export { sourcePath };
export { token };
export { topics };
@@ -191,6 +191,7 @@ type BranchProtectionOptions = {
apps?: string[];
};
requireBranchesToBeUpToDate?: boolean;
requiredConversationResolution?: boolean;
defaultBranch?: string;
enforceAdmins?: boolean;
dismissStaleReviews?: boolean;
@@ -205,6 +206,7 @@ export const enableBranchProtectionOnDefaultRepoBranch = async ({
bypassPullRequestAllowances,
requiredStatusCheckContexts = [],
requireBranchesToBeUpToDate = true,
requiredConversationResolution = false,
defaultBranch = 'master',
enforceAdmins = true,
dismissStaleReviews = false,
@@ -237,6 +239,7 @@ export const enableBranchProtectionOnDefaultRepoBranch = async ({
bypass_pull_request_allowances: bypassPullRequestAllowances,
dismiss_stale_reviews: dismissStaleReviews,
},
required_conversation_resolution: requiredConversationResolution,
});
} catch (e) {
assertError(e);
@@ -670,6 +670,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -691,6 +692,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: true,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -712,6 +714,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -739,6 +742,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -760,6 +764,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: false,
dismissStaleReviews: false,
});
@@ -781,6 +786,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -808,6 +814,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -818,6 +825,7 @@ describe('publish:github', () => {
...mockContext.input,
requiredStatusCheckContexts: ['statusCheck'],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
},
});
@@ -830,6 +838,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: ['statusCheck'],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -852,6 +861,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: ['statusCheck'],
requireBranchesToBeUpToDate: false,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -873,6 +883,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -955,6 +966,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -976,6 +988,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: true,
});
@@ -997,6 +1010,7 @@ describe('publish:github', () => {
requireCodeOwnerReviews: false,
requiredStatusCheckContexts: [],
requireBranchesToBeUpToDate: true,
requiredConversationResolution: false,
enforceAdmins: true,
dismissStaleReviews: false,
});
@@ -71,6 +71,7 @@ export function createPublishGithubAction(options: {
dismissStaleReviews?: boolean;
requiredStatusCheckContexts?: string[];
requireBranchesToBeUpToDate?: boolean;
requiredConversationResolution?: boolean;
repoVisibility?: 'private' | 'internal' | 'public';
collaborators?: Array<
| {
@@ -107,6 +108,8 @@ export function createPublishGithubAction(options: {
dismissStaleReviews: inputProps.dismissStaleReviews,
requiredStatusCheckContexts: inputProps.requiredStatusCheckContexts,
requireBranchesToBeUpToDate: inputProps.requireBranchesToBeUpToDate,
requiredConversationResolution:
inputProps.requiredConversationResolution,
repoVisibility: inputProps.repoVisibility,
defaultBranch: inputProps.defaultBranch,
protectDefaultBranch: inputProps.protectDefaultBranch,
@@ -144,6 +147,7 @@ export function createPublishGithubAction(options: {
bypassPullRequestAllowances,
requiredStatusCheckContexts = [],
requireBranchesToBeUpToDate = true,
requiredConversationResolution = false,
repoVisibility = 'private',
defaultBranch = 'master',
protectDefaultBranch = true,
@@ -211,6 +215,7 @@ export function createPublishGithubAction(options: {
bypassPullRequestAllowances,
requiredStatusCheckContexts,
requireBranchesToBeUpToDate,
requiredConversationResolution,
config,
ctx.logger,
gitCommitMessage,