The Calvinverse organization provides a number of repositories that contain all the necessary code to create a build environment based on the idea of immutable infrastructure. In other words resources, e.g. virtual machines or containers, are created with all the required applications and tooling in place. Once a specific version of a resources is created it is never be changed, neither in the resource form or when deployed as an instance. If changes are required then a new version of the resource is created, tested and released. Once the resource is released new instances based on this resource can be deployed.
The repositories describe resources different resources which are needed to create a fully functioning build environment, for instance:
The different resources can be combined into a relatively simple or small build system which may consist of only a few machines, or they may be combined into a far more complicated environment which consists of many different services for those cases where the build workflow is more complex.
The code in the repositories will either create a Hyper-V virtual machine image or a Docker container. However a different virtualization platform is desired changes can be made to the Packer configurations relatively easy to change the type of images that are generated.
The Calvinverse organisation contains a number of repositories with resources that can be used to create a build system. These resources fall into one of the following groups:
In general at least some of the base and build resources are needed to build a functional build system. The other resources may be required if a larger build system needs to be created.
In order to get started creating a build system the first thing to do is to create the resources that will make up the build system. Once the resource images have been created one needs to decide on the way the resources are going to be assembled into a functioning build environment. Part of this process involves storing the global configurations for all the resources in a sensible way.