report diff

Jenkins plugin to monittor comaprable content on system

This plugin allows you to monitor any difference in output of file or of rnu of any command, where unit is an line. Exemplar usage is rpm -qa - then during every run, all packages on system are stored, and during next run they are compared. Or env to monitor all variables in job find above specific path and so on. Of course if yours monitoring is supposed to be multios, the content must be generated by 3rd party logic or use Multiple diffs - one diff per command. On incompatible os, it willbe simply skipp (just do not fail run on failure via Changing build status)

Job

Most detaield view cnabe shown from build screen koji-jtreg-rpms

In job build screen, simple, but a lot of saying RPM Changes: X RPMs installed, Y RPMs removed is provided, where RPM Changes is link to following screen. Note, that Rpm Changes, Rpms installed and RPMs removed are custom strings which describe the changes you are monitoring. See advanced section in job config of plugin.

run

You can nicely see what lines (packages in our case) had changed.

Project

For quick overview, you have in-project graph: project

this graph shows how many lines was in stream, how many lines were removed compared to previous, how many lines were added.

Tooltip

The tooltip says it in manner of original purpose - difference in lines (installed packages in our example: tooltip

Unluckily the total - blackline, added - green line and removed as red line in one graph was not happy choice. Usually minor adds/removes are not visible. Wehn we do an system update, graph loks like: update

So although you see major changes, the red and green lines get mixed.

Settings

When you look to the sedttings: settings

You can see it is comand or file what you put here. It operates on workspace, so the file do not need to be archived (as is celar from nature of command xor file)

customizations

You can set up all the labels acording your taste, and thus give meaning to the diff you are presenting

Multiple diffs

You can havew sevral diffs, each comparing different command/file. According to this, several charts is show and several reports is navigable and collapsable in main report. Eah comaprsion have ID wich is mandatory to set, and is apointing the base line. Chnage of id == lost/change of baseline. Each of your charts can have separate title, and names of statuses (aka added lines x installed apps x new variables ).

Changing build status

You can set up plugin to change build status to unstable if there is change detected by diff.

You can set up plugin to change build status to failed if there command/readign fails and/or nothing is read.

Dynamic patch-like view

The plugin can dynamicaly calcualte difference in monitored files/commands between any two jobs in patch-like view. From main screen:

patch1

You can click /patch: whch will bring you directly to diff, eg .../45/patch/dynamic-diff?from=45&to=44&ids=.*&context=-1:

patch2

where you can modify the GET parameters as needed. Or you can clicl the Patch like report whcih will bring you to form:

patch3

Which allows you to set the GET parameter via gui.

Note, that individual ids are in reality regexes. Plain diff and visualised diff is based on https://github.com/java-diff-utils/java-diff-utils

Dependences

This plugin depends on chartjs-api library plugin