1version: 2
2mergeable:
3  - when: pull_request.*
4    validate:
5      - do: label
6        must_include:
7          regex: '^Type:'
8    fail:
9      - do: checks
10        status: 'failure'
11        payload:
12          title: 'Need an appropriate "Type:" label'
13          summary: 'Need an appropriate "Type:" label'
14  - when: pull_request.*
15    # This validator requires either the "no release notes" label OR a "Release" milestone
16    # to be considered successful.  However, validators "pass" in mergeable only if all
17    # checks pass.  So it is implemented in reverse.
18    # I.e.: !(!no_relnotes && !release_milestone) ==> no_relnotes || release_milestone
19    # If both validators pass, then it is considered a failure, and if either fails, it is
20    # considered a success.
21    validate:
22      - do: label
23        must_exclude:
24          regex: '^no release notes$'
25      - do: milestone
26        must_exclude:
27          regex: 'Release$'
28    pass:
29      - do: checks
30        status: 'failure'  # fail on pass
31        payload:
32          title: 'Need Release milestone or "no release notes" label'
33          summary: 'Need Release milestone or "no release notes" label'
34    fail:
35      - do: checks
36        status: 'success' # pass on fail
37