GSoC 2020 - External Fingerprint Storage project demo (Aug 28, 2020)
Channel: Jenkins
Date: 2020-08-30

Presentation by Sumit Sarin, a GSoC 2020 student in the Jenkins project.  File fingerprinting is a way to track which version of a file is being used by a job/build, making dependency tracking easy. The fingerprint engine of Jenkins can track usages of artifacts, credentials, files, etc. within the system. It does this by maintaining a local XML-based database. This leads to dependence on the physical disk of the Jenkins master. This project involved extending Jenkins core to support storing of fingerprints in an external storage, along with two reference implementations, backed by Redis and PostgreSQL respectively. Various functionalities like migration and cleanup were developed and released. Users can now use these plugins to externalize the storage of their fingerprints. This project was one step forward in developing a cloud native Jenkins.

Talk abstract: This presentation will start with a brief introduction about the fingerprinting engine in Jenkins and its use case. Then we will discuss the motivation behind externalizing these fingerprints. We will discuss the external fingerprint storage API built during the course of the project, and what features it allows the plugin developers to use. Then we will talk about the two reference implementations built by us during the project, backed by Redis and PostgreSQL. We will discuss fingerprint cleanup and migration strategies. A demo will be presented which will show the working of the plugins and their functionality in action. We will conclude the presentation with what potential future areas of improvement can be for this project where the community is more than welcome to contribute. And lastly a short Q&A with the developers behind this project.

References:

* Project page: https://www.jenkins.io/projects/gsoc/2020/projects/external-fingerprint-storage/
* Redis Fingerprint Storage Plugin: https://github.com/jenkinsci/redis-fingerprint-storage-plugin/
* PostgreSQL Fingerprint Storage Plugin: https://github.com/jenkinsci/postgresql-fingerprint-storage-plugin
* JEP: https://github.com/jenkinsci/jep/tree/master/jep/226