For example let's say you fixed Bugzilla Issue 16582 and make a PR for on GitHub. If one of your commits mentions the issue, e.g. like this Git commit message:
fix Bugzilla Issue 16582 - ParameterDefaults fails w/ scope parameter
The Dlang-Bot will do all the hard work of linking and referencing between Bugzilla, GitHub and Trello do for you.
It would comment on GitHub with list of all mentioned issues and link them to Bugzilla:
The first column of the table is the current status of the referenced issue.
A ✗
means that the issue is only mentioned (i.e. the commit message doesn't contain "Fix")
and the Bugzilla issue won't be auto-closed nor listed in the changelog as fixed:
For the Trello board it will also provide a reference:
And once a PR gets merged, the bot moves the linked Trello card to "Testing / Review".
Once a PR has been merged (i.e. the commits got pushed to master or stable), GitHub's Bugzilla integration will automatically comment to Bugzilla with a regarding commit:
It will also automatically close the referenced issues if fix
or fixes
(case-insensitive)
appears before the issue reference.
Using this syntax is also very important because for the changelog generation, the git history will be used. Thus only if the Dlang-Bot has detected an issue and commented on your PR it can become part of the changelog.
In doubt, you can use e.g. Regex101 to validate your commit message.
It's possible to reference multiple issues, e.g. with "Fixes issues 17494, 17505, 17506" the Dlang-Bot would detect:
Accepted optional separators are: commas (,
), the word and
, as well as the plus sign (+
),
and any amount of whitespace. Dlang-Bot will aggregate all mentioned issues over multiple commits.
(?:^fix(?:es)?(?:\s+(?:issues?|bugs?))?\s+(#?\d+(?:[\s,\+&and]+#?\d+)*))|(?:(?:issues?|bugs?)\s+(#?\d+(?:[\s,\+&and]+#?\d+)*))
(the GitHub Bugzilla integration and the Dlang-Bot use the same RegEx to parse git commit messages)
At the moment the Dlang-Bot supports merging via special auto-merge
and
auto-merge-squash
labels. The later will perform a squashed merge of all commits
in the PR into a single one.
A reviewer can toggle a PR for "auto-merge" by simply adding the auto-merge
label
(auto-merge-squash
respectively).
Note: at the moment the Dlang-Bot doesn't store any authentication token, so it can't perform actions on behalf of others.
The Dlang-Bot will try to detect common mistakes and warn the contributor. Currently implemented:
stable
The Dlang-Bot goes over all pull requests every day and will label PRs:
Currently this feature is in alpha-mode and only enabled for Phobos.
Dlang-Bot detects a pre-defined set of labels in the []
part of PR title and will label the PRs accordingly.
Multiple labels are supported.
Currently the hard-coded set of detected labels is:
For all repos in the dlang
organization Dlang-Bot provides contributing advice on a new PR:
If a PR contains Bugzilla references, the Dlang-Bot will automatically add a respective label:
Of course, other issue types can be detected as well:
@dlang-bot responds to GitHub events sent to its webhook. To use the bot in your project, configure a webhook with the following settings:
https://bot.dlang.io/github_hook
(or your own instance)application/json
For auto-merge
:
dlang
repositories #d3d3d3
is used as a label color)@dlang-bot
(or your own bot) needs to have write access to the GitHub repo (GitHub's protected branches are ideal for this)For example, dlang/phobos
is configured as follows:
Run the testsuite:
dub test -- --single --debug --trace --debug
Is there a feature that you would love the Dlang-Bot to do? Then don't hesistate to let us know and open a new issue.