Skip to content

Pull Request Process

tomspilman edited this page Mar 17, 2013 · 9 revisions

When a pull request is submitted one of the core developers will review it to ensure it meets the requirements of the project. There may be some discussion as to the best way to do a particular fix, don't get discouraged by this though, this kind of review makes the project better and helps to stop problems from creeping in.

As part of the process the core team will use the mgbot (MonoGame Build Bot) to test your pull request against the current codebase. This process will merge your changes into a local copy of the main project and build it against all the platforms that we support, this will highlight any build errors that might not be picked up if someone is testing for one particular platform.

Finally before the PR is merged we will look for other developers to build and test your changes. This process may be more or less rigorous depending on the complexity of the changes or the sensitivity of the code being changed.

MGBot

We have an automated build system in place which is based on Jenkins, it has a number of plugins which allow it to integrate into github and IRC.

GitHub Integration

When a new PR is submitted to the project the mgbot will place a comment

"Can one of the admins verify this patch?"

in the PR. This is to notify the core team members that a new PR is available and that it needs testing. One of the core developers will then add a command

@mgbot test

This tells the build system to a test build of that PR, it might take a while to complete, you will see a yellow banner at the top of the github page while this is in progress.

Testing a Pull Request

If it works and the build is ok this banner will go green like this

Testing a Pull Request

if not it will go grey. If it does fail a link is available for you to see what caused the issue.

Once a build is ok and everyone is happy with the PR till will be merged. Sometimes other PR's cause conflicts in other PR's when merged, if this happens you will need to re-sync your fork/branch with the upstream repository and push those changes to your branch (once you fix any issues). This will start the process again.

IRC Integration

MGBOT also sits in the #MonoGame IRC channel and performs builds on demand.

To get help on the mgbot you can use

!mgbot help

This will give you the list of commands available.

To build the main develop job you can issue the command

!mgbot build develop

it will schedule the build and report back the results.

To build a specific PR you can use

!mgbot build BuildPR sha1=origin/pr/{id}/head

where {id} is the number of the pull request.

Clone this wiki locally