Difference between revisions of "Jenkins"

From Free Pascal wiki
m (layout, small clarification)
(Comipler test suite problems, build slaves)
Line 65: Line 65:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Note: installing somewhere else may be a good idea, please refer to the Build FAQ.
 
Note: installing somewhere else may be a good idea, please refer to the Build FAQ.
 +
 +
=== Compiler test suite ===
 +
Could not get the compiler test suite in <fpc>/tests working (October 2012). Corrections/additions welcome.
 +
 +
 +
=== FPCUnit/DBTestframework tests ===
 +
  
 
=== Enhancements ===
 
=== Enhancements ===
 
Possible enhancements:
 
Possible enhancements:
* run make clean before building
+
* run make clean before building!?!
 
* run make install into a different prefix
 
* run make install into a different prefix
 
* run Lazarus compile
 
* run Lazarus compile
* run compiler test suite, save results
 
 
* run dbtestframework test suite, save results (in database or via XML if Jenkins supports that)
 
* run dbtestframework test suite, save results (in database or via XML if Jenkins supports that)
 
* add Windows (etc) build slaves
 
* add Windows (etc) build slaves
 
* add installer builders
 
* add installer builders
 
* different repositories
 
* different repositories
 +
 +
 +
== Windows/Linux... build slave ==
 +
You can set up other machines apart from the Jenkins server to act as "slaves": they are controlled from Jenkins and used to run jobs.
 +
 +
This can be useful when running a Windows build/test run from a Linux server.
 +
 +
See [https://wiki.jenkins-ci.org/display/JENKINS/Windows+slaves+fail+to+start+via+DCOM] for details on how to set up Windows build slaves via DCOM (note: there are other ways to set up (Windows) build slaves; please refer to the Jenkins documentation)
 +
 +
[[Category:FPC]]
 +
[[Category:Testing]]

Revision as of 11:19, 7 October 2012

Overview

Jenkins is a continuous integration server that can be used to automatically build and test projects based on commits to your source control system.

Use with FPC/Lazarus

This section describes how to set up Jenkins to automatically build FPC when a commit happens in SVN.

Jenkins set up

A possible version to use is Turnkey Linux Jenkins on Debian 6.0.5 (Squeeze)

Whichever way you install Jenkins, make sure the SVN plugin is enabled

#install binutils+stable FPC:
apt-get instal build-essential
#fpc would get old FPC 2.4 on this Debian Squeeze=> symptom in Jenkins build log: 
#generic.inc(2505,13) Fatal: Internal error 8
#Fatal: Compilation aborted
#make[7]: *** [system.ppu] Error 1

#get stable compiler (2.6 at time of writing); we're on a 32 bit system:
cd /root
wget http://sourceforge.net/projects/freepascal/files/Linux/2.6.0/deb/fp-compiler-2.6.0_2.6.0-0_i386.deb/download
mv download fp-compiler-2.6.0_2.6.0-0_i386.deb
wget http://sourceforge.net/projects/freepascal/files/Linux/2.6.0/deb/fp-compiler_2.6.0-0_i386.deb/download
mv download fp-compiler_2.6.0-0_i386.deb
wget http://sourceforge.net/projects/freepascal/files/Linux/2.6.0/deb/fp-units-rtl_2.6.0-0_i386.deb/download
mv download fp-units-rtl_2.6.0-0_i386.deb
wget http://sourceforge.net/projects/freepascal/files/Linux/2.6.0/deb/fp-units-rtl-2.6.0_2.6.0-0_i386.deb/download
mv download fp-units-rtl-2.6.0_2.6.0-0_i386.deb
wget http://sourceforge.net/projects/freepascal/files/Linux/2.6.0/deb/fp-units-i386-2.6.0_2.6.0-0_i386.deb/download
mv download fp-units-i386-2.6.0_2.6.0-0_i386.deb
wget http://sourceforge.net/projects/freepascal/files/Linux/2.6.0/deb/fp-units-i386_2.6.0-0_i386.deb/download
mv download fp-units-i386_2.6.0-0_i386.deb
wget http://sourceforge.net/projects/freepascal/files/Linux/2.6.0/deb/fp-utils-2.6.0_2.6.0-0_i386.deb/download
mv download fp-utils-2.6.0_2.6.0-0_i386.deb
wget http://sourceforge.net/projects/freepascal/files/Linux/2.6.0/deb/fp-utils_2.6.0-0_i386.deb/download
mv download fp-utils_2.6.0-0_i386.deb

dpkg -i fp-units-rtl-2.6.0_2.6.0-0_i386.deb
dpkg -i fp-units-rtl_2.6.0-0_i386.deb
dpkg -i fp-compiler-2.6.0_2.6.0-0_i386.deb
dpkg -i fp-utils-2.6.0_2.6.0-0_i386.deb
#no idea what the other .debs are for that we downloaded
#todo: this could be trimmed down a bit, but this seems to work

Setting up jobs

Use the job screen to set the svn source to the FPC trunk or branch you want to use (e.g. http://svn.freepascal.org/svn/fpc/trunk)

Set 'use svn update as much as possible'

Polling every 5 minutes could be a good setup. Alternatively, you can set up your own SVN server and write a commit hook script for that. This would result in this entry:

# every 5 minutes
*/5 * * * *

As build commands, the shell commnds

make all

and, to install inside the "workspace" or top of the build directory environment:

make install PREFIX=$WORKSPACE

Note: installing somewhere else may be a good idea, please refer to the Build FAQ.

Compiler test suite

Could not get the compiler test suite in <fpc>/tests working (October 2012). Corrections/additions welcome.


FPCUnit/DBTestframework tests

Enhancements

Possible enhancements:

  • run make clean before building!?!
  • run make install into a different prefix
  • run Lazarus compile
  • run dbtestframework test suite, save results (in database or via XML if Jenkins supports that)
  • add Windows (etc) build slaves
  • add installer builders
  • different repositories


Windows/Linux... build slave

You can set up other machines apart from the Jenkins server to act as "slaves": they are controlled from Jenkins and used to run jobs.

This can be useful when running a Windows build/test run from a Linux server.

See [1] for details on how to set up Windows build slaves via DCOM (note: there are other ways to set up (Windows) build slaves; please refer to the Jenkins documentation)