Adding to @Slav answer, Fingerprinting
help Jenkins in keeping track of which version of a file is used by which version of a dependency.
Quoting an example and how it works from Jenkins Page:
For example:
Suppose you have the TOP
project that depends on the MIDDLE
project, which in turn depends on the BOTTOM
project.
You are working on the BOTTOM
project. The TOP
team reported that bottom.jar
that they are using causes an Null Pointer Exception, which you (a member of the BOTTOM team) thought you fixed in BOTTOM #32
.
Jenkins can tell you which MIDDLE
builds and TOP
builds are using (or not using) your bottom.jar #32
.
How does it work?
The fingerprint
of a file is simply a MD5
checksum. Jenkins maintains a database of md5sum
, and for each md5sum
, Jenkins records which builds of which projects used. This database is updated every time a build runs and files are fingerprinted.
To avoid the excessive disk usage, Jenkins does not store the actual file. Instead, it just stores md5sum and their usages. These files can be seen in
$JENKINS_HOME/fingerprints