- Automated bugzilla, github, and trello references
- Auto-merging approved & passing PRs
- Warn about common mistakes
- Find stalled PRs
- Allow PR submitters to label their PRs
- Send contributing advice message
- Auto-label PRs
- Using the Dlang-Bot for your project
- Missing a feature?
fix 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.
✗ 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:
Of course it will also automatically close the references issues (at least if either "fix", "close" or "address" occurs before the issue id).
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.
Referencing multiple issues
It's possible to reference multiple issues, e.g. with "Fixes issues 17494, 17505, 17506" the Dlang-Bot would detect:
Of course, the Dlang-Bot will aggregate all mentioned issues over multiple commits.
- one can mention multiple issues in one commit and/or multiple commits
- the exact RegEx is:
((close|fix|address)e?(s|d)? )?(ticket|bug|tracker item|issue)s?:? *([\d ,\+&#and]+)
(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-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
- this relies on the "restricted branches" feature of GitHub (the Dlang-Bot will send the attempt to merge to the GitHub API)
- once a new commit event occurs (push, synchronization) the Dlang-Bot will automatically remove set all auto-merge labels from the PR
- for status events the GitHub API doesn't allow to get an information about the
- the Dlang-Bot will then try to restart the PR on every new event.
- concerning PR of the commit (thus all potential auto-merge PRs are checked)
Note: at the moment the Dlang-Bot doesn't store any authentication token, so it can't perform actions on behalf of others.
Warn about common mistakes
The Dlang-Bot will try to detect common mistakes and warn the contributor. Currently implemented:
- Regression fixes doesn't target
Find stalled PRs
The Dlang-Bot goes over all pull requests every day and will label PRs:
- "stalled" (PR has had no activity within 60 days)
- "needs rebase" (PR has a merge conflict)
- "needs work" (PR has more than two failing CI providers)
Currently this feature is in alpha-mode and only enabled for Phobos.
Allow PR submitters to label their PRs
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:
Send contributing advice message
For all repos in the
dlang organization (and
dlang-bots) Dlang-Bot provides contributing advice on a new PR:
Of course, other issue types can be detected as well:
Using the Dlang-Bot for your project
The Dlang-Bot is run on Heroku and deploying your fork should be pretty straightforward. Just remember to set all environment variables. Alternatively feel free to ping and we can add your project to our hosted Dlang-Bot. The GitHub hook for your project should look roughly like this:
- Payload URL:
https://dlang-bot.herokuapp.com/github_hook(or your own)
- Content type:
- Select at least these events (or all):
- Pull request
- Pull request review
- Pull request comment
- an respective label needs to be added (at the
#d3d3d3is 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)
dlang/phobos is configured as follows: