Simple build more and more such solutions to emerge over time, but for now let’s have a look at its building blocks. The Build CRD is the central element of the Knative build. The Build defines the con‐ crete steps that the Knative build operator needs to perform for a build. Example 25-3 demonstrates the main ingredients: In this example, the source is again our sample Java project hosted on GitHub and built with Maven. The builder image is a container image that contains Java and Maven. Jib is used to build the image without a Docker daemon and push it to a registry. Name of the build object Source specification with a GitHub URL apiVersion : build.knative.dev/v1alpha1 kind : Build metadata : name : random-generator-build-jib spec : source : git : url : https://github.com/k8spatterns/random-generator.git revision : master steps : -  name : build-and-push image : gcr.io/cloud-builders/mvn args : - compile com.google.cloud.tools:jib-maven-plugin:build -Djib.to.image=registry/k8spatterns/random-generator workingDir : /workspace Example 25-3. Knative Java build using Maven with Jib • A  source  specification for pointing to the location of the application’s source code. The source can be a Git repository as in this example or other remote loca‐ tions like Google Cloud Storage, or even an arbitrary container from where the build operator can extract the source. • The  steps  required for turning the source code into a runnable container image. Each step refers to a builder image that is used to perform the step. Every step has access to a volume mounted on  /workspace  that contains the source code but is also used to share data among the steps. Solution  |  231