Build Docker image

Buddy lets developers build Docker images with code from a Git repository and the selected Dockerfile. Setting up a Docker-focused pipeline is as easy as setting up any other type of delivery in the service.

Configuration

  1. First, you need to specify which repository should the image be based on. Buddy has native integrations with GitHub, Bitbucket and GitLab, but you can hook up any other repository as well:

Selecting repositorySelecting repository

  1. With the repository successfully synchronized, you can add the pipeline. A pipeline can be triggered on specific events, manually on click, or recurrently on a time interval:

Adding new pipelineAdding new pipeline

  1. If you set the pipeline to run on a Git push, specify the branch, tag, or wildcard for which the build will run:

Pipeline configurationPipeline configuration

  1. With the pipeline prepared, we can add the Build Image from the Docker section of the action roster:

Adding Build Docker image actionAdding Build Docker image action

  1. In the action details, specify the Dockerfile location and the context directory in which the image will be built:

Configuring Docker build detailsConfiguring Docker build details

Building private images

If the image is private (e.g. FROM: my-registry.com/buddy/my-image:latest) and requires logging into a registry, you can configure the integration in the Build tab in the action.

Buddy natively integrates with Docker Hub, Amazon ECR, Google GCR, and Google Artifact Registry. You can also use any other private registry:

Selecting Docker registrySelecting Docker registry

Building Multi-Arch Docker images

The Multi-Arch Build Image action allows you to set the target architecture for which the Docker image is built:

  • linux/amd64
  • linux/arm64
  • linux/arm/v7
  • linux/arm/v6

To choose the platform, add the action to the pipeline and use the dropdown menu in the Target platform section:

Choosing target platform for multi-arch Docker imagesChoosing target platform for multi-arch Docker images

Docker image Continuous Delivery

With Buddy, you can automate basically any type of DevOps process. For example, you can create a pipeline that will perform the following tasks on every push to the selected branch – just by adding new actions to the already existing ones:

  1. Run unit tests
  2. Check the Dockerfile for issues
  3. Build a Docker image
  4. Run the image and test it for errors
  5. Push the image to the selected registry
  6. Send a notification to a Slack channel

Here's how these tasks look like transferred into pipeline actions:

Docker pipeline exampleDocker pipeline example

Tip
Buddy caches Docker layers and application dependencies to speed up your build process.

Build arguments

By default, Buddy doesn't pass the environment variables to the build. If you want to pass them, you have to define build args and provide the environment variable that you want to pass as a value.

Apart from this, you can define your own build arguments in the action:

Build argumentsBuild arguments

Target build stage

If your Dockerfile contains multiple build stages of an image, you can specify which stage should be built in the Build tab:

Target build stageTarget build stage

Provenance

In the Build Docker image action, you can enable the creation of provenance attestations. These attestations encompass essential data, such as build timestamps, build parameters and environment configurations, version control metadata, and source code details. To utilize the feature, use the dropdown menu in the action and select the desired mode:

Provenance settingsProvenance settings

Secrets

Buddy gives you the option to add secrets that are passed to a Docker build using two secret types: env or file. When using the env type, you need to specify the secret name and select an environment variable from a dropdown list. When using the file type, you need to specify the secret name and select a file from the filesystem:

SecretsSecrets

Cache

All Docker layers are automatically cached during the build process. This caching mechanism ensures that future builds only create layers that have been modified since the last build, which drastically reduces the build time. While it is possible to prune dangling images, we do not recommend doing so. If needed, you can enable this option in the Options section:

Cache optionsCache options

Hint

📚 Learn more about Build Docker image action features, integrations and alternatives.

Recommended
Last update:
Sep 19, 2024