How to push a Docker image to a repository in your Amazon ECR registry with the Bamboo Docker task
You want to use the Amazon Elastic Container Registry (ECR) with the native Bamboo Docker task.
Step-by-step guide
We are going to use the official docker-library/hello-world image as an example:
Create a 'hello-world' Amazon ECR repository via the AWS Management Console
Open the Amazon ECS console repositories page.
For 'Repository Name', enter a unique name for your repository and choose 'Next step'.
You can skip the 'Build, tag, and push Docker image' step.
(Optional) Configure a Script task to check the Docker version in use by the Bamboo agent - Docker is evolving fast, so it is helpful to have this information readily available in the build log for debugging purposes.
Report Docker version
docker --version
(Optional) Configure a Source Code Checkout task with the repository that contains your Dockerfile (can also be specified inline instead) - for this example we are going to checkout the official docker-library/hello-world image repository.
Configure the Amazon ECR Credentials Variables task with an appropriate AWS credentials source, just like you would do for a dedicated task - this injects the resulting temporary Amazon ECR authentication credentials as Bamboo variables for reuse in subsequent tasks:
(Optional) Only specify a 'Registry ID' if your Amazon ECR repository is not hosted in your own AWS account.
Select the 'Source' to be either an IAM Role for EC2 (Agent) or an Identity Federation for AWS Connector.
We are only going to need the following variables later on:
Bamboo variables
${bamboo.custom.aws.ecr.proxyEndpointDomain} ${bamboo.custom.aws.ecr.username} ${bamboo.custom.aws.ecr.password}
Build a Docker image on the Bamboo agent:
Specify the 'Repository' as
${bamboo.custom.aws.ecr.proxyEndpointDomain}/hello-world:latest.
Select 'Use an existing Dockerfile located in the task's working directory' to work with the docker-library/hello-world image source checked out in step 2 above.
(Optional) Run the hello-world image for demo/test purposes:
Specify the 'Docker image' as
${bamboo.custom.aws.ecr.proxyEndpointDomain}/hello-world:latest.
Bamboo agents vs. Amazon ECS clusterIf your goal is to use the Bamboo Docker task's Run action, you might want to consider running your container on the Amazon Elastic Container Service (ECS) instead, which, other than running containers on Bamboo agents, is a highly scalable, high performance container management service that allows you to easily run applications on a managed cluster of Amazon EC2 instances - refer to Deploying to Amazon ECS for details.
Push the hello-world image to the Amazon ECR registry:
Select 'Custom registry' and specify the 'Repository' as
${bamboo.custom.aws.ecr.proxyEndpointDomain}/hello-world:latest.
Specify the 'Username' as
${bamboo.custom.aws.ecr.username}.
Specify the 'Password' as
${bamboo.custom.aws.ecr.password}.
The 'Password' field is masked, so copying a respectively prepared string from elsewhere ensures the correct syntax is being used.
(Deprecated) Specify an arbitrary email address when using Bamboo < 6.2.0.
E.g. '
none
' also works: 'Email' is a required field, but the address is ignored by Amazon ECR.
Removal of --email / -e flag as of Docker 17.06Specifying an email address is not supported anymore as of Bamboo 6.2.0, because the -e and --email flags flags have been removed from Docker engine as of release 17.06, see (BAM-18613 - Docker Task: -e required for docker push command) and Bamboo Docker task fails due to ProcessException: Error executing '/usr/bin/docker login ...', exit code: 125.
Compatibility notes
Find below compatibility notes regarding this article (see also Identity Federation for AWS Compatibility Notes).
Supported
No known compatibility issue.
End of Life
Related articles
Amazon Web Services™, AWS™ and the “Powered by Amazon Web Services” logo are trademarks of Amazon.com, Inc. or its affiliates in the United States and/or other countries.
Utoolity® is a registered trademark of Utoolity GmbH.
© 2024 Utoolity GmbH. All rights reserved.