We have a problem at our org where we have the need to know "with very high certainty" what specific versions of each app/web service/etc. is deployed to a given node and/or environment at any given point in time.
Some ideas have been kicked around, such as:
- A custom deploy tool that is backed by a DB, and on each deploy, records the version number to the DB (so that we can do a DB query and say "Hey, it looks like the Fizz Buzz Web Service has version 1.34.1 deployed to its QA/TEST environment")
- Some kind of a "build info" plugin that injects CI information into a metadata file (XML/JSON/whatever) and that exposes some admin URL where we can retrieve that info from. For instance, the CI build creates version 1.34.2 of the "Fizz Buzz Web Service" and creates a buildinfo.json file inside of its binary. Then once the web service is deployed, some server-side controller can read that JSON file and expose it as info at, say,
http://myapp.example.com:8081/buildinfo
, etc.
While these methods may work, I feel like we're trying to reinvent the wheel here. So I ask: are there tools/methods/practices that address this already? I just want the ability to run some type of query that reports what version of a component (again, web app, web service, DB, whatever) is deployed to a given node (VM) or environment (DEV, QA, PROD).