Custom build is designed to fill the gap that was created when everybody jumped into creating Docker images. Still there is a requirement to produce individual artifacts (packages, jars, wars, installable zips, base images etc.) This is where Custom build is the perfect match to fill in that gap. Additionally Custom build allows implementing any extended build process for example, CI/CD flow that runs unit or integration tests. The limit here is just the imagination of the custom builder image author.
To fully utilize the power of Custom build one needs to be understand how to create a builder image that will be capable of building desired objects.
The builder image upon invocation receives following environment variables with the information needed to proceed with the build:
This variable specifies the entire serialized Build object.
This variable specifies the URL to a repository with sources to build.
This variable specifies the path to the Docker socket, if exposing the Docker socket was enabled on BuildConfig.
Although the custom builder image author has a great flexibility in defining the build process on its own, still they should follow a few required steps necessary to seamlessly run a build inside of OpenShift. The required steps for a custom builder image are following:
Read the Build definition, which contains all the necessary information about input parameters for the build.
Run the build process.
If your build produces image, push it to the Build's output location if the output location is defined. Other output locations can be passed with environment variable for now.