Skip to content
Egon Geerardyn edited this page Apr 11, 2017 · 10 revisions

Since Jenkins is not as straightforward as Travis CI to navigate, this page contains a few things you might need to know about our own Jenkins server and how to navigate the results. This server is only accessible if you're logged into GitHub and part of the matlab2tikz organization.

Pull requests

For every pull request, Jenkins will try to build the merged pull request on some supported environments:

  • MATLAB 2014a
  • MATLAB 2014b
  • Octave 3.8

if the person who requests the pull is part of the matlab2tikz organization.

For security reasons, pull requests of outsiders are not build automatically, but require confirmation from a developer.

Communicating with the bot

There are a few commands that @matlab2tikzBot can understand and in some pull requests the bot will for feedback. Note, however, that the bot is quite stupid and requires almost exactly these phrases (case matters, whitespace does not).

The @matlab2tikzBot will ask for confirmation to test a pull request from new developers:

Can a developer please verify this PR for testing?

Any developer can respond:

  • @matlab2tikzBot: test this PR to test the PR
  • @matlab2tikzBot: add OP to whitelist to whitelist the person for testing (should be done with care and it's often easier to add the person to the organization after their first PR anyway)

At any random time, you should also be able to instruct the bot to test the current PR again using @matlab2tikzBot: please test this

Tip: You can add these commands to your saved replies for convenience

Navigating Jenkins

Note that you can always use the breadcrumbs bar at the top to navigate or to look where you are in the hierarchy.

Project page

The first interesting page is the matlab2tikz project page which shows the last few complete builds of the project (lower left corner) and for each environment (R2014a, R2014b and Octave) whether the last build passed.

The easiest way to navigate further, is to pick a job number in the lower left corner. Note those are mostly linked to a GitHub PR.

Job page

You will end up on a job page, this shows the results/progress of that job for all environments we test in.

In the left sidebar, you can access some of the aspects of the job, e.g. see how many TODOs/FIXMEs are in the code using the Open Tasks.

In the main panel (center), you see an overview of the test results. Most importantly, at the bottom you get a bit of information about:

  • why the tests failed (e.g. for build #51, it reports "The function "m2tstrjoin" crashed on line 14.")
  • what the overall status in the different environments ("configurations") was.

By clicking on one of the configurations, you get a more detailed report specifically for that environment.

Job/environment page

E.g. for build #51 on MATLAB 2014a, you get quite a detailed breakdown of the test report.

A few interesting things (both in the center panel and left sidebar):

  • TAP results and TAP Extended Test Results show a table of the headless tests.
  • Again you can see what likely caused a build fail. Clicking on "Indication N" takes you to the part of the log that makes Jenkins decide that way.
  • If you click on ACID report you get the typical Travis report formatted as HTML page.
  • You can also look at the Console output produced during the build if you prefer an unformatted representation.

Changelog

This is a short and incomplete changelog of what has changed to our Jenkins. This should allow us to track any regressions of Jenkins.

  • 2015 October 12: @egeerardyn: installed Xvfb plugin and configured it. Hopefully, this allows some MATLAB tests depending on the Filter Design toolbox to run properly.
  • 2016 Spring: Jenkins server now uses wired LAN instead of wireless LAN.
  • 2016 September 5 - 16: @egeerardyn: Jenkins server downtime is scheduled: the Jenkins server will be moved to a new location.
  • 2016 November 23: @egeerardyn: Server update removed dependency of libread.so.6 from Octave. Patched in the so.7 version which seems to launch Octave 3.8 just fine for the time being.
  • 2017 April 11: @egeerardyn: taking Jenkins CI server offline due to lack of valid MATLAB license and phasing out Octave 3.8 is imminent.

Remaining tasks

This is an incomplete list of tasks that should/could happen:

  • Write scripts for granting SSH access to developers automatically based on their Github keys
  • Integrate with PMD/CPD to check for duplicate code and other code smells.