0

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.

sorin
  • 161,544
  • 178
  • 535
  • 806
  • So i was looking for the same solution but we went the container route with a create file (does the system) and then building VirtualEnv from scratch from Artifactory each time (requirements.txt). I guess external tools can be done VIA a rest API and then placing in another file. These are then attachable to the build via source. – JamesD Mar 17 '17 at 23:53
  • James, you are missing the point here: environments do evolve in time and I do want to capture the information with the build in a format that allows me to compare easily two builds. Is about building a manifest during the build. I know that Artifactory supports this for java projects but I am looking for something more generic. – sorin Mar 24 '17 at 11:02
  • We document the environment using the container file and the requirements. This gives us a BOM. We can then diff these to see the differences in our environments. I am not aware of something more generic, a jenkins plugin seems like a interesting idea however. – JamesD Mar 28 '17 at 15:28

0 Answers0