UNPKG

@ammar-ahmed/automation-app-bot

Version:
277 lines (246 loc) 8.51 kB
Configuration of the rulesets can be done in two ways: Simple or advanced. Here's an example file for simple settings: ```yml ############################## # Example Simple Settings ############################# mergeable: pull_requests: # Minimum of 5 approvals is needed. approvals: 5 # Regular expression to be tested on the title. Not mergeable when true. title: 'wip' # Only mergeable when milestone is as specified below. milestone: 'version 1' # Only mergeable when Project is as specified below project: 'Alpha' # exclude any of the mergeable validation above. A comma separated list. For example, the following will exclude validations for approvals and label. exclude: 'approvals, label' issues: # Regular expression. In this example, whenever a issues has a label with the word 'wip' label: 'wip|do not merge|experimental' ``` Here's an example configuration file for advanced settings and all of it's possible options: ```yml ############################## # example Advanced Settings ############################## mergeable: pull_requests: stale: # number of days for a PR to be considered stale. A comment is posted when it is stale. days: 20 # Optional property. When not specified the default is used. The default message is: # There haven't been much activity here. This is stale. Is it still relevant? This is a friendly reminder to please resolve it. :-) message: 'This is PR is stale. Please follow up!' title: must_include: regex: `^\\(feat\\)|^\\(doc\\)|^\\(fix\\)` message: `Title must have prefixes for the following: (feat), (doc), (fix)` must_exclude: regex: 'wip' message: 'This PR is work in progress.' begins_with: match: '(feat)|(doc)|(fix)' message: 'Custom message...' ends_with: match: '(feat)|(doc)|(fix)' message: 'Custom message...' label: must_include: regex: `^\\(feat\\)|^\\(doc\\)|^\\(fix\\)` message: `Title must have prefixes for the following: (feat), (doc), (fix)` must_exclude: regex: 'wip' message: 'Custom message. This PR is work in progress.' begins_with: match: '(feat)|(doc)|(fix)' message: 'Come message...' ends_with: match: '(feat)|(doc)|(fix)' message: 'Come message...' milestone: must_include: regex: `Release 1` message: `Custom message...` must_exclude: regex: 'jibberish' message: 'Custom message...' begins_with: match: 'Release' message: 'Custom message...' ends_with: match: '' message: 'Custom message...' project: must_include: regex: `Release 1` message: `Custom message...` must_exclude: regex: 'jibberish' message: 'Custom message...' begins_with: match: 'Release' message: 'Custom message...' ends_with: match: '' message: 'Custom message...' approvals: min: 5 message: 'Custom message...' required: reviewers: [ user1, user2 ] # list of github usernames required to review owners: true | false # will read the file .github/CODEOWNERS and make them required reviewers message: 'Custom message...' description: no_empty: enabled: false message: 'Custom message...' must_include: regex: 'feat' message: 'Custom message...' must_exclude: regex: 'DO NOT MERGE' message: 'Custom message...' assignee: min: 1 max: 1 message: 'Custom message...' dependent: files: ['package.json', 'yarn.lock'] # list of files that all must be modified if one is modified message: 'Custom message...' ##### # Advanced settings for issues. When any of the rules below is not valid Mergeable will create a comment on that issue to let the author know. ### issues: stale: # number of days for an issue to be considered stale. A comment is posted when it is stale. days: 20 # Optional property. When not specified the default is used. The default message is used. message: 'This is issue is stale. Please follow up!' title: must_include: regex: `^\\(feat\\)|^\\(doc\\)|^\\(fix\\)` message: `Title must have prefixes for the following: (feat), (doc), (fix)` must_exclude: regex: 'wip' message: 'This PR is work in progress.' begins_with: match: '(feat)|(doc)|(fix)' message: 'Custom message...' ends_with: match: '(feat)|(doc)|(fix)' message: 'Custom message...' label: must_include: regex: `^\\(feat\\)|^\\(doc\\)|^\\(fix\\)` message: `Title must have prefixes for the following: (feat), (doc), (fix)` must_exclude: regex: 'wip' message: 'Custom message. This PR is work in progress.' begins_with: match: '(feat)|(doc)|(fix)' message: 'Come message...' ends_with: match: '(feat)|(doc)|(fix)' message: 'Come message...' milestone: must_include: regex: `Release 1` message: `Custom message...` must_exclude: regex: 'jibberish' message: 'Custom message...' begins_with: match: 'Release' message: 'Custom message...' ends_with: match: '' message: 'Custom message...' project: must_include: regex: `Release 1` message: `Custom message...` must_exclude: regex: 'jibberish' message: 'Custom message...' begins_with: match: 'Release' message: 'Custom message...' ends_with: match: '' message: 'Custom message...' description: no_empty: enabled: false message: 'Custom message...' must_include: regex: 'feat' message: 'Custom message...' must_exclude: regex: 'DO NOT MERGE' message: 'Custom message...' assignee: min: 1 max: 1 message: 'Custom message...' ``` By default if the configuration file does not exist, the following is the default settings out of the box: ```yml #################### # default settings #################### mergeable: pull_requests: label: 'work in progress|do not merge|experimental|proof of concept' title: 'wip|dnm|exp|poc' description: no-empty: true ``` The configuration file follows a certain format. It is in the general following structure: ```yml mergeable: subject: topic: advanced_option (optional): ``` ### Structure & Formating The configuration file in general follows a structure. There is a hierarchy of `subject`, `topic`, and `advanced_option`. Currently the list of `subjects` available are: - pull_requests: - issues: A list of `topics` available for a simple configuration file are as follows: - title: regex (must exlude) - description: regex (must exclude) - assignee: number (minimum number of assignees) - labels: regex (must exclude) - milestone: regex (must include) - project: regex (must include) - approvals: number (minimum number of assignee) - exclude: [] (exclude any of the topic above) A list of `advanced_option` for an advanced configuration file are as follows: - must_include - regex - message - must_exclude - regex - message - begins_with - match - message - ends_with - match - message - min - count - message - max - count - message - no-empty - enabled - message - required - reviewers - message **Note**: Not all `advanced_option` works with all topics except project and milestone -- `sub_options` must be provided for each advanced options.