View Source

{excerpt} This plugin introduces a game where users gets point on improving the builds.{excerpt}

{warning:title=No longer maintained in the Hudson community}
This plugin has moved it's development to the Jenkins infrastructure, which can be found at [the new Jenkins Wiki page|http://wiki.jenkins-ci.org/display/JENKINS/The+Continuous+Integration+Game+plugin]. Please report issues and find the latest versions in the Jenkins community.
{warning}

The plugin is a simple proof of concept of the Build game that was created by [Clint Shank|http://clintshank.javadevelopersjournal.com/ci_build_game.htm]. The idea behind the game is to decrease the number of times a build becomes broken. To win the game the developers have to commit code that is compiling and keep adding unit tests.

h2. Usage


h3. Configuration

{note:title=Version requirements}
Note that the plugin version 1.13\+ requires Hudson 1.320 to work and the following plugin versions:
* Checkstyle 3.1
* Findbugs 4.0
* PMD 3.1
* Tasks 4.0
* Warnings 3.0
* Violations 0.5.4
* analysis-core 1.0
{note}The plugin is not activated for all jobs at start, each separate job has to activate the game. The game can also be de-activated in one job if some large merge activity is going to take place. To activate the game for a job, go to the job configuration page and check the _Continuous integration game_ box.

h3. Build score card

For each build the game calculates, according to the rules, the number of points that it is worth. Each user that is responsible for the build (ie comitters) receives the points.
!summary.png|align=center!\\

Clicking on the link shows what rules that were involved in the point calculation.
!scorecard.png|align=center!\\

h3. Leader board

To see who is winning the build game, there is a leader board that is shown on the front page.
!leaderboard.png|align=center!\\

h1. Rules

The rules of the game are:
* \-10 points for breaking a build
* 0 points for breaking a build that already was broken
* \+1 points for doing a build with no failures (unstable builds gives no points)
* \-1 points for each new test failures
* \+1 points for each new test that passes

Rules that depend on other plugins:
* [PMD Plugin]. Adding/removing a HIGH priority warning = \-5/+5. Adding/removing a MEDIUM priority warning = \-3/+3. Adding/removing a LOW priority warning = \-1/+1.
* [Task Scanner Plugin]. Adding/removing a HIGH priority task = \-5/+5. Adding/removing a MEDIUM priority task = \-3/+3. Adding/removing a LOW priority task = \-1/+1
* [Violations Plugin]. Adding/removing a violation = \-1/+1. Adding/removing a duplication violation = \-5/+5.
* [Findbugs Plugin]. Adding/removing a HIGH priority findbugs warning = \-5/+5. Adding/removing a MEDIUM priority findbugs warning = \-3/+3. Adding/removing a LOW priority findbugs warning = \-1/+1
* [Warnings Plugin]. Adding/removing a compiler warning = \-1/+1.
* [Checkstyle Plugin]. Adding/removing a checkstyle warning = \-1/+1.

h2. Adding rules to the game

Currently there are three ways to add rules to the game.

h3. Patch

Send me a patch for the rule implementation, and I can include it in the main game plugin.

h3. Including rules in another plugin

You are a maintainer of a plugin and would like to add rules to the game with data from your plugin. To do this you should declare the game plugin as an [optional dependency|Dependencies among plugins#Optionaldependencies] to your plugin. To create rules implement the interface *Rule*, and group them together in a *RuleSet*. To add a *RuleSet* to the game, add it to the game's *RuleBook*.
{code:java}hudson.plugins.cigame.PluginImpl.GAME_PUBLISHER_DESCRIPTOR.getRuleBook().addRuleSet(pluginruleset);
{code}If there are already rules for your plugin in the game plugin, let me know so they can be removed from the plugin.

h3. Include rules in a third plugin

You would like to add rules to the game that are only valid for your organization and do not want to share them. To do this you should declare the game plugin as a [mandatory dependency|Dependencies among plugins#Mandatorydependencies] to your plugin. Then implement the *Rule* and add them to the *RuleBook* as in above point.

h1. Changelog

h3. _Upcoming version_

h3. Version 1.17

* Added stylecop warnings for the violations plugin [HUDSON-4847|http://issues.hudson-ci.org/browse/HUDSON-4847]

h3. Version 1.16

* Fix issue with last analysis plugins [HUDSON-5022|http://issues.hudson-ci.org/browse/HUDSON-5022]

h3. Version 1.15

* Fixed a bug where a player that exists in several SCM log entries would receive points for each entry. ([4470@issue])

h3. Version 1.14

* Fixed so skip unit tests are ignored. ([4449@issue])

h3. Version 1.13 _Requires Hudson 1.320 or later_

* Fixed so no points are awarded for a build if previous build reports has an error. ([4391@issue])
* Hopefully fixed the NPE in the Violations plugin. ([3726@issue])
* Added feature to handle user names case insensitive. ([3990@issue])
* Fixed 404 when clicking on Leaderboard in any view but the main view ([3604@issue])
* Added localisation support. So if you want help out, please check the [Internationalization] page. ([3484@issue])

h3. Version 1.12

* Added a description column in the leader board ([4141@issue])
* Fixed most rules so the person who fixes a broken build doesnt get any penalties or rewards for it. The person will still get the points for fixing the build. ([2592@issue])

h3. Version 1.11

* Fixed so points are added or subtracted for test cases when run in a maven job ([2542@issue])

h3. Version 1.7

* Fixed NoSuchMethod exception when using newer versions of Warnings and Checkstyle plugins ([2169@issue], [2218@issue])

h3. Version 1.6

* Points are no longer awarded for violations and checkstyle 'fixes' when the is build is broken ([1884@issue])

h3. Version 1.5

* Warnings, FindBugs, PMD, Open tasks, Checkstyle rules no longer throws exception when it is used for the first time ([1810@issue])
* Anonymous users no longer see the "Reset scores" link next to the leader board ([1837@issue])

h3. Version 1.4

* Added option to exclude users from the game ([1608@issue])
* Added option for Administrators to change the score of each user ([1608@issue])
* Now it is possible for Administrators (or everyone if no there is no security) to reset all scores ([1754@issue])

h3. Version 1.3

* Using Violations plugin 0.6.0 no longer throws an exception ([1755@issue])

h3. Version 1.2 _Requires Hudson 1.211 or later_

* Fixed that points are given for each added/failed unit test ([1721@issue])
* Added rules for the [PMD Plugin]. Adding/removing a HIGH priority warning = \-5/+5. Adding/removing a MEDIUM priority warning = \-3/+3. Adding/removing a LOW priority warning = \-1/+1.
* Added rules for the [Task Scanner Plugin]. Adding/removing a HIGH priority task = \-5/+5. Adding/removing a MEDIUM priority task = \-3/+3. Adding/removing a LOW priority task = \-1/+1
* Added rules for the [Violations Plugin]. Adding/removing a violation = \-1/+1. Adding/removing a duplication violation = \+5/-5.
* Added rules for the [Findbugs Plugin]. Adding/removing a HIGH priority findbugs warning = \-5/+5. Adding/removing a MEDIUM priority findbugs warning = \-3/+3. Adding/removing a LOW priority findbugs warning = \-1/+1 ([1743@issue])
* [Warnings Plugin]. Adding/removing a compiler warning = \-1/+1.
* [Checkstyle Plugin]. Adding/removing a checkstyle warning = \-1/+1.

h3. Version 1.1

* Fixed that no points are given out when a build goes from failed to unstable

h3. Version 1.0

* Initial version with hard coded rules