From 946fd42d07740cf2e1fceb2a3b3472e49f52fdcd Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sat, 24 Dec 2016 23:23:18 +0100 Subject: [PATCH 1/3] Add explanatory README --- README.md | 105 +++++++++++++++++++++- public/img/dlang_bot_bugzilla_comment.png | Bin 0 -> 33805 bytes public/img/dlang_bot_github_comment.png | Bin 0 -> 16626 bytes public/img/dlang_bot_trello_comment.png | Bin 0 -> 10938 bytes 4 files changed, 101 insertions(+), 4 deletions(-) create mode 100644 public/img/dlang_bot_bugzilla_comment.png create mode 100644 public/img/dlang_bot_github_comment.png create mode 100644 public/img/dlang_bot_trello_comment.png diff --git a/README.md b/README.md index 2e1dbad..9142230 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,102 @@ -# dlang-bot -Dlang-bot for automated bugzilla, github, and trello references. -Also cancels stale Travis-CI builds +# Dlang-Bot -![dlang-bot](public/img/dlang_bot.png) +dlang-bot + +Features +-------- + +- [Automated bugzilla, github, and trello references](#automated-references) +- [Auto-merging approved & passing PRs](#auto-merge) +- [Canceling stale Travis-CI builds](#canceling-stale) + + + + +Automated references +-------------------- + +For example let's say you fixed [Issue 16582](https://issues.dlang.org/show_bug.cgi?id=16582) +and make a PR for on GitHub. +If one of your commits mentions the issue, e.g. like this Git commit message: + +``` +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. + +### GitHub + +It would comment on GitHub with list of all mentioned issues and link them to Bugzilla: + +dlang-bot-github + +The first column of the table is the current status of the referenced issue. + +### Bugzilla + +Once a PR has been merged (i.e. the commits got pushed to master or stable), the Dlang-Bot +will automatically comment to Bugzilla with the regarding commit: + +dlang-bot-bugzilla + +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. + +### Trello + +For the [Trello board](https://trello.com/b/XoFjxiqG/active) it will also provide a +reference: + +dlang-bot-trello + +And once a PR gets merged, the bot moves the linked Trello card to "Testing / Review". + +### Nerdy details + +- 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]+) +``` + + + +Auto-merge (WIP) +--------------- + +At the moment the Dlang-Bot support 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). + + +### Nerdy details + +- 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. + + + +Canceling stale Travis-CI builds +-------------------------------- + +To avoid wasteful resource consumption with Travis CI, +the Dlang-Bot will automatically cancel the previous, possibly running build of +a PR on a new commit event (push or synchronization by a user). diff --git a/public/img/dlang_bot_bugzilla_comment.png b/public/img/dlang_bot_bugzilla_comment.png new file mode 100644 index 0000000000000000000000000000000000000000..3b51b79fea116be6408f5348c6055d6f257cd44e GIT binary patch literal 33805 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 Date: Sun, 25 Dec 2016 20:17:02 +0100 Subject: [PATCH 2/3] Reformulate Bugzilla section --- README.md | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 9142230..7b240ad 100644 --- a/README.md +++ b/README.md @@ -34,10 +34,19 @@ It would comment on GitHub with list of all mentioned issues and link them to Bu The first column of the table is the current status of the referenced issue. +### Trello + +For the [Trello board](https://trello.com/b/XoFjxiqG/active) it will also provide a +reference: + +dlang-bot-trello + +And once a PR gets merged, the bot moves the linked Trello card to "Testing / Review". + ### Bugzilla -Once a PR has been merged (i.e. the commits got pushed to master or stable), the Dlang-Bot -will automatically comment to Bugzilla with the regarding commit: +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: dlang-bot-bugzilla @@ -48,15 +57,6 @@ Using this syntax is also very important because for the changelog generation, t 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. -### Trello - -For the [Trello board](https://trello.com/b/XoFjxiqG/active) it will also provide a -reference: - -dlang-bot-trello - -And once a PR gets merged, the bot moves the linked Trello card to "Testing / Review". - ### Nerdy details - one can mention multiple issues in one commit and/or multiple commits @@ -66,12 +66,15 @@ And once a PR gets merged, the bot moves the linked Trello card to "Testing / Re ((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) + Auto-merge (WIP) --------------- -At the moment the Dlang-Bot support merging via special `auto-merge` and +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. From 3e2bf958232d85b33b53c34c4437c4b033763622 Mon Sep 17 00:00:00 2001 From: Sebastian Wilzbach Date: Sun, 25 Dec 2016 20:20:22 +0100 Subject: [PATCH 3/3] Add Travis + CodeCov shields --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 7b240ad..29db1b1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # Dlang-Bot +[![Travis build status](https://travis-ci.org/dlang-bots/dlang-bot.svg?branch=master)](https://travis-ci.org/dlang-bots/dlang-bot) +[![Codecov](https://img.shields.io/codecov/c/github/dlang-bots/dlang-bot/master.svg)](https://codecov.io/gh/dlang-bots/dlang-bot) + dlang-bot Features