External Fingerprint Storage for Jenkins

Goal: Extend Jenkins to support storing artifact usage history in external databases

Status: Active

Team

Details

Abstract

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.

The core idea of this project is to extend Jenkins core to support storing of fingerprints in an external storage, which would also allow tracking them across the entire CI/CD flow.

overview

Overview of Goals

  • Build a pluggable storage engine, which would allow fingerprints to be stored in external storages managed by storage system specific plugins.

  • Implementation of one such plugin (for Redis). This implementation should act as a reference for the development of other such external storage plugins for fingerprints.

  • Build the Fingerprint External Storage API Plugin to track the flow of fingerprints across the entire CI/CD flow.

Deliverables

Phase 1

  • Jenkins core ready with support for pluggable storage extension point (beta API), that can be used by plugins (lacking migration and fingerprint cleanup support)

  • FileFingerprintStorage designed, implemented and conforms to maintain backwards compatibility.

  • POC reference implementation for Redis Fingerprint Storage Plugin.

  • Documentation as well as tests written for the points mentioned above.

  • Blog Post (Phase 1)

Phase 2

  • Alpha version of Redis Fingerprint Storage Plugin released.

  • Migration handling support added.

  • Fingerprint cleanup support added.

  • Blog Post (Phase 2)

Phase 3

  • Beta version of Redis plugin released.

  • FingerprintStorage API removed from Beta.

  • Setup Guides, README and contributing guide explaining how to setup, use and contribute to the plugin.

  • 1.0 version Redis plugin released.

  • 1.0 version Fingerprint External Storage API plugin released.

  • Blog Post (Final)

Meetings

Meetings are held every Thursday at 14:30 UTC. Meeting notes are available here.

Links