
How it works...
Let's first see how it works while starting the build manually. The following diagram is the reference of explanation:

Firstly, we need a source repository; it can be either CodeCommit, GitHub, or s3. BitBucket is also supported now. Post that, we have to set up the environment where the build will take place. The environment will be Docker image. Now, here, we have two types of images-one is managed by AWS, which will runtime as Linux platform and have the necessary package of Java, Android, Python, Go, Ruby, and so on, and the other image will be given by us, which will be the custom image. For the custom image, we have to pass the registry detail as well, that is, from where they will pull the Docker image.
In the environment setup, you will find one parameter called Build Specification, where you can enter your build command or specify the buildspec.yml file (build step file). After that, you have to set up the artifacts location, mostly AWS S3, where you can put the build files.
When you insert the updated source code in CodeCommit and trigger CodeBuild to build the project, it will pull the latest code from the repository and launch a container with the platform and prepackaged application, which means that the image of Java with Maven will run. In this environment, the application code will be built, using the Buildspecific file or Build commands mentioned in the Build Specification. Once the build happens, then it will put the artifacts to the S3 bucket.