Baselining an application is an essential task required to identify all of the compile and runtime dependencies that are necessary to support application build, package and deployment. If you get this right then you will always be able to be certain which version is running in Production (or QA for that matter) at any point. You will also be able to retrieve a specific code milestone and make modifications (e.g. bugfix) in order to make changes to the code without any chance of the code regressing due to the wrong version of a particular header file or other compile dependency. Baselining at the source code level is fundamental and usually depends upon version control practices including placing an immutable tag (or label) to identify the exact versions of all source code and configuration files necessary to reliably build a specific release. Baselining at the runtime level is a little different and involves ensuring that the correct versions of the code are built, packaged and deployed.
Many organizations have a regulatory requirement to independently build code, verifying in the process that the code has been correctly baselined. The build should also embed unique immutable version IDs into each and every configuration item. This is essential for conducting the configuration audit. The next step is to package the release which should include a manifest with a bill of materials (BOM) identifying all of the configuration items included in the release. This facilitates automated application deployment. These practices are the ABCs of excellent DevOps!
More articles by this author