I am looking for a solution that would allow me to record and diff the following things in Jenkins:
- installed system packages (like rpms)
- installed pip packages (pip freeze/list) - could be multiple: system or one or more virtual environments.
- API versions of external systems or services that are used during the build. Example: JIRA, PYPI
While is easy to save the output of such commands in text files and to configure ArtefactArchiver to archive them, this does not enable me to extend the changelog with these.
Ideally I would like to be able to extend the changelog with the information found and display changes since last successful build.
Providing this information would be extremely useful for developers because one of the major sources of build breakages is not the repository being build but something else from the ecosystem.
I think that this is usually called a build manifest or bill-of-materials (BOM), a structured file that is supposed to list all things that contributed to the creation of of the final build artefacts.
Obviously that I tried to google a lot and to investigate every plugin from jenkins in order to find this but so far I was not able to find something that covers this.
I am not so concerned about gathering this information, that's the easy part. The trick and the subject of this question is how to compare them and expose them to the user in a nice interface.
PS. Most of the packages that are build and tested are Python so I would be inclined to prefer looking for Python solution. Still, the pipelines are Groovy. I only hope that implementing this would not require writing a Jenkins plugin because I would want to avoid this at all costs.
Another idea that I am investigating would be to produce some fake-unittest results in junit format that could be used for checking what changed between two different builds.