Jenkins continuous integration server: Difference between revisions

Content deleted Content added
imported>Hendrik Brummermann
imported>AntumDeluge
add note
 
(23 intermediate revisions by 3 users not shown)
Line 2:
{{Navigation for Stendhal Developers}}
 
'''''NOTE:''' the project no longer used Jenkins'' - [[User:AntumDeluge|AntumDeluge]] ([[User talk:AntumDeluge|talk]])
 
HudsonJenkins is an extensible continuous integration server. YouSome candevelopers haveuse alocal lookJenkins atinstances [http://stendhal.game-host.org/hudson/for our Hudson server] with several build jobs forbuilding Stendhal, Marauroa and MarboardMarauroa.
 
 
<div style="border: 1px solid red; padding: 1em">The rest of this article deals with the installation and configuration of Hudson. If you are just interested in the results, please follow this link to [http://stendhal.game-host.org/hudson/ our Hudson server] above.
</div>
 
In production we don't use Jenkins, but [https://travis-ci.org/arianne/ Travis].
 
==Installation==
To install and run HudsonJenkins you just need to download the hudson<code>jenkins.war</code> from the hudsonJenkins web site and have javaJava ready. To start the server you need a small start script that issues the following command:
java -jar hudsonjenkins.war
Once the hudsonJenkins is started, you can reach the user interface via your favourite browser if you open the following URL (assuming you have hudsonJenkins on the same machine as your browser):
http://localhost:8080
If you see the hudsonJenkins interface loading, you have successfully installed hudsonJenkins.
 
==Configuration for Stendhal==
To let hudsonJenkins build stendhalStendhal you have to match the following prerequesitesprerequisites:
* ANT installed on the same system
* JDK 7 installed
* JDK1.5 installed (already matched if you were successfully running hudson, as it needs java to run)
* CVS-ClientGit installed
 
ForHere ouris hudsona welist installedof severalJenkins plugins that you may want to install via the hudsonJenkins configuration. You can see what each plugin does, if you have a look at our hudson or look onto the wiki at the hudsonJenkins homepage. This list is not complete, as we still experiment with some of the plugins.
* [httphttps://wiki.hudsonjenkins-ci.org/display/HUDSONJENKINS/Audit+TrailGit+Plugin AuditGit TrailPlugin]
** if you want to build from a Git repository
* [http://wiki.hudson-ci.org/display/HUDSON/Checkstyle+Plugin Checkstyle Plugin]
* [httphttps://wiki.hudsonjenkins-ci.org/display/HUDSONJENKINS/CoberturaFile+PluginSystem+SCM HudsonFile CoberturaSystem pluginSCM Plugin]
** if you want to build directly from the working copy (without committing)
<!--* [http://hudson.gotdns.com/wiki/display/HUDSON/Crap4J+Plugin Hudson Crap4J plugin]-->
<!--* [httphttps://wiki.hudsonjenkins-ci.org/display/HUDSONJENKINS/EmmaXvnc+Plugin HudsonXvnc Emma pluginPlugin]-->
** You may want to install this if some tests that depend on Swing fail with an error like ''«No X11 DISPLAY variable was set, but this program performed an operation which requires it»'' (see http://stackoverflow.com/q/12533339/479288).
* [http://wiki.hudson-ci.org/display/HUDSON/Emotional+Hudson+Plugin Emotional Hudson plugin]
* [http://wiki.hudson-ci.org/display/HUDSON/FindBugs+Plugin FindBugs Plugin]
* [http://wiki.hudson-ci.org/display/HUDSON/Task+Scanner+Plugin Task Scanner Plugin]
* [http://wiki.hudson-ci.org/display/HUDSON/Warnings+Plugin Warnings Plugin]
* [http://wiki.hudson-ci.org/display/HUDSON/Green+Balls Green Balls]
* [http://wiki.hudson-ci.org/display/HUDSON/Claim+Plugin Claim Plugin]
* [http://wiki.hudson-ci.org/display/HUDSON/The+Continuous+Integration+Game+plugin The Continuous Integration Game plugin]
 
Other plugins to try:
In the main configuration you have to tell hudson where it can find all necessary things.
* [http://wiki.jenkins-ci.org/display/JENKINS/Audit+Trail+Plugin Audit Trail]
* [http://wiki.hudsonjenkins-ci.org/display/HUDSONJENKINS/Checkstyle+Plugin Checkstyle Plugin]
<!--* [http://hudsonjenkins.gotdns.com/wiki/display/HUDSONJENKINS/Crap4J+Plugin HudsonJenkins Crap4J plugin]-->
<!--* [http://wiki.jenkins-ci.org/display/JENKINS/Emma+Plugin Jenkins Emma plugin]-->
* [http://wiki.hudsonjenkins-ci.org/display/HUDSONJENKINS/Emotional+HudsonJenkins+Plugin Emotional HudsonJenkins plugin]
* [http://wiki.hudsonjenkins-ci.org/display/HUDSONJENKINS/FindBugs+Plugin FindBugs Plugin]
* [http://wiki.hudsonjenkins-ci.org/display/HUDSONJENKINS/Task+Scanner+Plugin Task Scanner Plugin]
* [http://wiki.hudsonjenkins-ci.org/display/HUDSONJENKINS/Warnings+Plugin Warnings Plugin]
* [http://wiki.hudsonjenkins-ci.org/display/HUDSONJENKINS/Green+Balls Green Balls]
* [http://wiki.hudsonjenkins-ci.org/display/HUDSONJENKINS/Claim+Plugin Claim Plugin]
* [http://wiki.hudsonjenkins-ci.org/display/HUDSONJENKINS/The+Continuous+Integration+Game+plugin The Continuous Integration Game plugin]
 
In the main configuration you have to tell hudsonJenkins where it can find all necessary things.
 
At every configurable point is a small help to tell what to configure here.
Line 43 ⟶ 48:
==Setup a build job for Stendhal==
 
The next steps show, how to configure a basic build job for stendhalStendhal.
 
===Source Code Management System===
 
Just select CVS and configure the following parameters:
==== Build from Git ====
* CVS-Root
 
:* :pserver:anonymous@arianne.cvs.sourceforge.net:/cvsroot/arianne
To build from Git, you need to have the [https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin Git plugin] installed. Just select Git and configure the following parameters:
* Module
* Repository URL
:* stendhal
:* <code>file:///your/path/to/stendhal</code>
* Branch
:* leave this empty if you wantBranches to build HEAD.
:* leave this empty if you want to build HEAD.
:* or choose a branch name to build
 
==== Build from the working copy ====
 
To build from the working copy:
* have the [https://wiki.jenkins-ci.org/display/JENKINS/File+System+SCM File System SCM] plugin installed
* select "File System" from "Source Code Management"
* Path: <code>/your/path/to/stendhal</code>
 
===Build Trigger===
 
Here you configure, when a build is started. OurA currentpossible way ofis triggering builds is triggered from CVSGit at a certain time. This meansdoesn't not,mean thethat CVSGit tells hudsonJenkins to start a build, but it tells hudsonJenkins to check regularly theon CVSGit for changes and builds, when there were commits since the last build.
 
You also can start build at certain times not regarding changes since last build.
 
For both of this options you have to provide a cron like notation, when to check/build. AtFor the momentexample, weyou could check every day at 5 am and build then.
 
The other options allow it to start a build via URL or let a build start, if another build was finished.
 
===Build Steps===
To build Stendhal with hudsonJenkins, we just execute three targets from the standard <code>build.xml</code> included in stendhalStendhal source code. We let hudsonJenkins first call ''<code>clean run_tests_with_cobertura''test</code>. This first cleans the workspace and starts a complete build including coverage measurement. Afterwards we start ''java_doc''<code>docs</code> which generates a fresh apiAPI documentation from stendhalStendhal.
 
===Post Build Processing===
After a build was successful certain steps follow to produce those nice looking reports and graphics. For stendhalStendhal we use several reports to publish.
* Publish Javadoc
* java doc
:* check this option to publish the generated javaJava docs
:* provide ''api'' as directory for the docs
* junitPublish JUnit test resultsresult report
:* check this option to publish the results
:* provide ''<code>**/build/build_test_report/testresults.xml''</code> as location for the junitJUnit report in xmlXML format
* Record JaCoCo coverage report
* cobertura
:* this option allows us to publish the results of the test coverage
:* provide ''<code>**/build/cobertura_reportbuild_server</*.xmlcode> as ''Path asto reportclass filedirectories''
:* provide <code>**/src</code> as ''Path to source directories''
* To do report
* Warnings
 
==Known Problems==