Groups

Groups are powerful options to fit your needs. When you want to execute severals rules with the same onSuccess, onError or onBoth callbacks, you can group these rules to apply them your callbacks.

Check at the example below:

options:
  enableGroups: false
#...
groups:
  #ISSUES
  - groupName: 'Issues Alerts'
    rules:
      - name: issueComment
        options:
          regexp: '.*'
          users:
            ignore:
              - bastienterrier
      - name: issueTitle
        options:
          regexp: '.*'
          users:
            ignore:
              - bastienterrier
    onSuccess:
      - callback: SendEmailRunnable
        args:
          to:
            - bastien.terrier@gmail.com
            - admin@your.website.com
          subject: '[Issue]"{{data.issue.title}}" (#{{data.issue.number}})'
          message: '<b>{{data.issue.title}}</b> has been created/commented!<br>{{data.issue.description}}'

The SendEmailRunnable callback will be apply when issueComment OR issueTitle rules succeed.

Note that you have to set enableGroups option to true

allRuleResultInOne option

You can also set the allRuleResultInOne: true option. This option allows you to call the onSuccess (and others) callbacks only one time, but with the result of all the processed rules.

Let's have a look at the example below:

options:
  enableGroups: false
  allRuleResultInOne: true
#...
groups:
  #ISSUES
  - groupName: 'Issues to Webhook'
    rules:
      - name: commitMessage
        #...
      - name: oneCommitPerPR
      - name: checkAddedFiles
        #...
      - name: checkCronFiles
        #...
    onBoth:
      - callback: WebhookRunnable
        args:
          url: 'https://some.custom.api'
          config: {
            'token': 'your_personal_token'
          }
          data: '{{data}}'

It could be very helpful if you want to send data through the WebhookRunnable. Imagine you can reach an API only 10 times a day.

In our example, all the previous rules can be fired on Push event. Therefore, when a Push event occurs, if you don't enable the allRuleResultInOne option, the callback will be called 4 times. Consequently, you've just lost 3 API calls.

With the option, the API will be called only once with the result of the 4 rules stored into data.