Last active
June 28, 2024 05:56
-
-
Save jweyrich/ee090a223f53700976cc4c2834f8c047 to your computer and use it in GitHub Desktop.
Sample of buildspec.yml for AWS CodeBuild that builds a Docker image from code and push it to ECR to be deployed via CodePipeline
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Change the following to your desired values: | |
# __ACCOUNT_NUMBER__ | |
# __ECR_REGION__ | |
# __ECR_REPOSITORY_NAME__ | |
# __ECS_CONTAINER_NAME__ | |
version: 0.2 | |
phases: | |
install: | |
runtime-versions: | |
docker: 18 | |
pre_build: | |
commands: | |
- echo Logging in to Amazon ECR... | |
- aws --version | |
- $(aws ecr get-login --region __ECR_REGION__ --no-include-email) | |
- REPOSITORY_URI=__ACCOUNT_NUMBER__.dkr.ecr.__ECR_REGION__.amazonaws.com/__ECR_REPOSITORY_NAME__ | |
- COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7) | |
- IMAGE_TAG=${COMMIT_HASH:=latest} | |
build: | |
commands: | |
- echo Build started on `date` | |
- echo Building the Docker image... | |
- docker build -t $REPOSITORY_URI:latest . | |
- docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG | |
post_build: | |
commands: | |
- echo Build completed on `date` | |
- echo Pushing the Docker images... | |
- docker push $REPOSITORY_URI:latest | |
- docker push $REPOSITORY_URI:$IMAGE_TAG | |
- echo Writing image definitions file... | |
- printf '[{"name”:"__ECS_CONTAINER_NAME__","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json | |
artifacts: | |
files: imagedefinitions.json |
aws ecr get-login
is deprecated.
Use this instead:
aws ecr get-login-password --region $__ECR_REGION__ | docker login --username AWS --password-stdin $__ACCOUNT_NUMBER__.dkr.ecr.$__ECR_REGION__.amazonaws.com
Your ServiceRole will need these Permissions:
"ecr:BatchCheckLayerAvailability",
"ecr:CompleteLayerUpload",
"ecr:GetAuthorizationToken",
"ecr:InitiateLayerUpload",
"ecr:PutImage",
"ecr:UploadLayerPart"
$__ECR_REGION__
, $__ACCOUNT_NUMBER__
, $__ECR_REGION__
need to be configured somewhere ?
$__ECR_REGION__
,$__ACCOUNT_NUMBER__
,$__ECR_REGION__
need to be configured somewhere ?
Yes you can configure them in environment variables in AWS codebuild during creating a new project
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Found this to be very useful.