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.