Jenkins continuous integration server: Difference between revisions
imported>Hendrik Brummermann |
imported>AntumDeluge add note |
||
| (19 intermediate revisions by 2 users not shown) | |||
| Line 2: | Line 2: | ||
{{Navigation for Stendhal Developers}} |
{{Navigation for Stendhal Developers}} |
||
'''''NOTE:''' the project no longer used Jenkins'' - [[User:AntumDeluge|AntumDeluge]] ([[User talk:AntumDeluge|talk]]) |
|||
Jenkins is an extensible continuous integration server. Some developers use local Jenkins instances for building Stendhal and Marauroa. |
|||
<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== |
==Installation== |
||
To install and run |
To install and run Jenkins you just need to download the <code>jenkins.war</code> from the Jenkins web site and have Java ready. To start the server you need a small start script that issues the following command: |
||
java -jar |
java -jar jenkins.war |
||
Once |
Once Jenkins is started, you can reach the user interface via your favourite browser if you open the following URL (assuming you have Jenkins on the same machine as your browser): |
||
http://localhost:8080 |
http://localhost:8080 |
||
If you see the |
If you see the Jenkins interface loading, you have successfully installed Jenkins. |
||
==Configuration for Stendhal== |
==Configuration for Stendhal== |
||
To let |
To let Jenkins build Stendhal you have to match the following prerequisites: |
||
* ANT installed on the same system |
* 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) |
|||
* |
* Git installed |
||
Here is a list of Jenkins plugins that you may want to install via the Jenkins configuration. You can see what each plugin does, if you have a look at onto the wiki at the Jenkins homepage. |
|||
* [ |
* [https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin Git Plugin] |
||
** if you want to build from a Git repository |
|||
| ⚫ | |||
* [ |
* [https://wiki.jenkins-ci.org/display/JENKINS/File+System+SCM File System SCM Plugin] |
||
** if you want to build directly from the working copy (without committing) |
|||
| ⚫ | |||
* [https://wiki.jenkins-ci.org/display/JENKINS/Xvnc+Plugin Xvnc Plugin] |
|||
** 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). |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
Other plugins to try: |
|||
| ⚫ | |||
* [http://wiki.jenkins-ci.org/display/JENKINS/Audit+Trail+Plugin Audit Trail] |
|||
| ⚫ | |||
| ⚫ | |||
<!--* [http://wiki.jenkins-ci.org/display/JENKINS/Emma+Plugin Jenkins Emma plugin]--> |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
At every configurable point is a small help to tell what to configure here. |
At every configurable point is a small help to tell what to configure here. |
||
| Line 43: | Line 48: | ||
==Setup a build job for Stendhal== |
==Setup a build job for Stendhal== |
||
The next steps show |
The next steps show how to configure a basic build job for Stendhal. |
||
===Source Code Management |
===Source Code Management=== |
||
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 |
|||
* Branches to build |
|||
:* leave this empty if you want to build HEAD. |
|||
:* or choose a branch name to build |
:* 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=== |
===Build Trigger=== |
||
Here you configure |
Here you configure when a build is started. A possible way is triggering from Git at a certain time. This doesn't mean that Git tells Jenkins to start a build, but it tells Jenkins to check regularly on Git 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. |
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. |
For both of this options you have to provide a cron like notation, when to check/build. For example, you 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=== |
===Build Steps=== |
||
To build Stendhal with |
To build Stendhal with Jenkins, we just execute three targets from the standard <code>build.xml</code> included in Stendhal source code. We let Jenkins first call <code>clean test</code>. This first cleans the workspace and starts a complete build including coverage measurement. Afterwards we start <code>docs</code> which generates a fresh API documentation from Stendhal. |
||
===Post Build Processing=== |
===Post Build Processing=== |
||
After a build was successful certain steps follow to produce those nice looking reports and graphics. For |
After a build was successful certain steps follow to produce those nice looking reports and graphics. For Stendhal we use several reports to publish. |
||
* Publish Javadoc |
|||
* java doc |
|||
:* check this option to publish the generated |
:* check this option to publish the generated Java docs |
||
:* provide ''api'' as directory for the docs |
:* provide ''api'' as directory for the docs |
||
* |
* Publish JUnit test result report |
||
:* check this option to publish the results |
:* check this option to publish the results |
||
:* provide |
:* provide <code>**/build/build_test_report/testresults.xml</code> as location for the JUnit report in XML format |
||
* Record JaCoCo coverage report |
|||
* cobertura |
|||
:* this option allows us to publish the results of the test coverage |
:* this option allows us to publish the results of the test coverage |
||
:* provide |
:* provide <code>**/build/build_server</code> as ''Path to class directories'' |
||
:* provide <code>**/src</code> as ''Path to source directories'' |
|||
* To do report |
* To do report |
||
* Warnings |
* Warnings |
||
==Known Problems== |
|||
Latest revision as of 09:09, 15 January 2022
NOTE: the project no longer used Jenkins - AntumDeluge (talk)
Jenkins is an extensible continuous integration server. Some developers use local Jenkins instances for building Stendhal and Marauroa.
In production we don't use Jenkins, but Travis.
Installation
To install and run Jenkins you just need to download the jenkins.war from the Jenkins web site and have Java ready. To start the server you need a small start script that issues the following command:
java -jar jenkins.war
Once Jenkins is started, you can reach the user interface via your favourite browser if you open the following URL (assuming you have Jenkins on the same machine as your browser):
http://localhost:8080
If you see the Jenkins interface loading, you have successfully installed Jenkins.
Configuration for Stendhal
To let Jenkins build Stendhal you have to match the following prerequisites:
- ANT installed on the same system
- JDK 7 installed
- Git installed
Here is a list of Jenkins plugins that you may want to install via the Jenkins configuration. You can see what each plugin does, if you have a look at onto the wiki at the Jenkins homepage.
- Git Plugin
- if you want to build from a Git repository
- File System SCM Plugin
- if you want to build directly from the working copy (without committing)
- Xvnc Plugin
- 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).
Other plugins to try:
- Audit Trail
- Checkstyle Plugin
- Emotional Jenkins plugin
- FindBugs Plugin
- Task Scanner Plugin
- Warnings Plugin
- Green Balls
- Claim Plugin
- The Continuous Integration Game plugin
In the main configuration you have to tell Jenkins where it can find all necessary things.
At every configurable point is a small help to tell what to configure here.
Setup a build job for Stendhal
The next steps show how to configure a basic build job for Stendhal.
Source Code Management
Build from Git
To build from Git, you need to have the Git plugin installed. Just select Git and configure the following parameters:
- Repository URL
file:///your/path/to/stendhal
- Branches to build
- 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 File System SCM plugin installed
- select "File System" from "Source Code Management"
- Path:
/your/path/to/stendhal
Build Trigger
Here you configure when a build is started. A possible way is triggering from Git at a certain time. This doesn't mean that Git tells Jenkins to start a build, but it tells Jenkins to check regularly on Git 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. For example, you could check every day at 5 am and build then.
Build Steps
To build Stendhal with Jenkins, we just execute three targets from the standard build.xml included in Stendhal source code. We let Jenkins first call clean test. This first cleans the workspace and starts a complete build including coverage measurement. Afterwards we start docs which generates a fresh API documentation from Stendhal.
Post Build Processing
After a build was successful certain steps follow to produce those nice looking reports and graphics. For Stendhal we use several reports to publish.
- Publish Javadoc
- check this option to publish the generated Java docs
- provide api as directory for the docs
- Publish JUnit test result report
- check this option to publish the results
- provide
**/build/build_test_report/testresults.xmlas location for the JUnit report in XML format
- Record JaCoCo coverage report
- this option allows us to publish the results of the test coverage
- provide
**/build/build_serveras Path to class directories - provide
**/srcas Path to source directories
- To do report
- Warnings