Gromacs

Jenkins

     

     

    The Jenkins continous integration server is available at http://jenkins.gromacs.org.

    Currently A long time ago, the following build slave configurations are being used::

     

    Name Host

    OS

    MPI CMake* GSL XML FFTW
    bs_nix1004 tcbs10 Ubuntu 10.04 MPICH2 1.2.1.1 ** 2.8.0 1.1.3 2.7.6 3.2.2
    bs_centos63 tcbl15 CentOS 6.3 MPICH2 1.2.1 [2.3.el6 2.8.8 1.13 2.7.6 3.2.1
    bs_nix64 tcbs09 Ubuntu 11.10 OpenMPI 1.4.3 2.8.5 None 2.7.8 2.2.2
    bs_nix1204 bs-nix1 Ubuntu 12.04 OpenMPI 1.5.4 2.8.7 None 2.7.8 3.3
    bs_nix1310 bs-nix2 Ubuntu 13.10 OpenMPI 1.6.5 2.8.11.2  1.16 2.9.1 3.3.3
    bs_mac bs-mac1 Mac OS 10.7.2 None 2.8.11.2 None 2.9.0 3.3.3
    bs_Win2008_64 tcbs11 Windows 2008 None 2.8.7 1.1.5 2.7.8 3.3.2

    *) This is the default CMake version used if no version is explicit specified

    **) Branch 4.5 is using OpenMPI 1.4.1

    The build configurations are the very similar for all branches. Only GCC 4.5 is without MPI for the 4.5 branch. The only difference for the master job is that it displays the unit tests.

    All settings not explicitly given are the default CMake settings. All builds are 64bit besides MSVC 2008 and Intel compiler on Windows.

    Triggering of Jenkins builds

    Gerrit automatically triggers builds for any change uploaded (for drafts, Jenkins has to be added manually as reviewer and only then can you go to Jenkins and it knows about that gerrit patch so you can trigger manually). This includes changes uploaded to regressiontests and releng. The "Gromacs_Gerrit_*" jobs require all three repositories (gromacs, regressiontests, releng). A given change is localized to only one repo, so Jenkins uses the most recent version of the respective branch for the other two repos. This means that tandem fixes to (say) code and tests cannot auto-verify. See below.
     
    One can manually trigger builds using options in the top left of Jenkins:
    • Retrigger: The link is on the left of a Job triggered by Gerrit. So it only works if Gerrit trigger it originally. It is useful if some temporary problem caused the build to fail. Retrigger is only possible for a whole matrix job not for a single configuration within (also the link is only available on the job page). "Retrigger all" retriggers it for all jobs which were triggered by a certain change (e.g. for 4.6 both the Gromacs_Gerrit_4_6 and also the cppcheck_Gerrit_4_6).
    • Build Now: This lets one build a specific version. By default it builds the latest version of each of the 3 repos but one can can specify any version using the refspec. This is the only way to build a version from the gromacs repo with one from the regressiontests repo if both are still in review. Only for this method, the result of the build is not reported back to Gerrit, because Jenkins doesn't know where to write it. So a developer will need to check on this result, and apply +1 verify manually. To find the refspec, examine the command line gerrit constructs for checking out the patch (e.g. resembling refs/changes/53/2053/1) and paste only that fragment into the appropriate Jenkins "Build Now" entry boxes. 
    • Query and Trigger Gerrit Patches: This is useful to trigger a build for a new change in Gerrit which for some reason didn't get automatically trigger (e.g. draft or Jenkins down at the time of the upload). 

    Creating new build configurations

    You need to have a Jenkins account with the proper permissions. Log into Jenkins to auto-create an account and write to Roland or to Szilard the email address you used.

    One can change an existing job or create a new job as a copy of an exisiting one for testing. To add new build configurations one needs to add  line to the user-defined axis "OPTIONS".

    Each line is seperately passed to GerritBuild.py in the releng repository which executes the build. To get it:

    git clone ssh://user@gerrit.gromacs.org/releng

    All GMX_* flags are automatically passed to cmake. Other flags (e.g. Compile) are evaluated by GerritBuild.py.

    GerritBuild.py expects to be executed on one of the Jenkins test machines but for testing purpurses can also be executed on a machine similar to one of them. It can be executed e.g. by 

    OPTIONS="Compiler=gcc CompilerVersion=4.6 host=bsnix_64" GERRIT_PROJECT=releng python ../GerritBuild.py

    Logging into build slaves

    Use remote desktop to do non-trivial work on Windows (at least). For example, on Ubuntu you might use remmina and connect to tcbs11.theophys.kth.se to get the Windows build slave.

    For quick sysadmin, ssh -Y to tcbv[012] and use virt-manager. (One of those machines requires sudo virt-manager, too.)

    Page last modified 13:58, 16 Feb 2016 by mabraham