version: 0.2 env: shell: bash phases: pre_build: commands: - echo Logging in to Amazon ECR... - docker login -u $DOCKER_USER -p $DOCKER_ACCESS_TOKEN - aws --version - ACCOUNT_ID=${CODEBUILD_BUILD_ARN} && IFS=':' && set -- $ACCOUNT_ID && ACCOUNT_ID=$5 - aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com - REPOSITORY_URI=$ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/privado-main - | if [[ $AWS_REGION = "eu-west-1" ]] then LATEST_TAG="$(git describe --tags --abbrev=0)" VERSION=${LATEST_TAG:1} else LATEST_TAG=$(curl -i https://api.github.com/repos/Privado-Inc/privado/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/') VERSION_INITIAL=${LATEST_TAG:1} VERSION=$VERSION_INITIAL-$CODEBUILD_BUILD_NUMBER fi - echo $VERSION - echo $BRANCH_NAME - | if [[ $AWS_REGION = "eu-west-1" ]] then TAG_1=latest else TAG_1=${CODEBUILD_WEBHOOK_TRIGGER:7} fi - TAG_2=$VERSION - TAG_3=${CODEBUILD_WEBHOOK_HEAD_REF##*/} build: commands: - echo Build started on `date` - echo Building the Docker image... - docker build -t $REPOSITORY_URI:latest --build-arg VERSION=$VERSION . - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$TAG_1 - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$TAG_2 post_build: commands: - echo Build completed on `date` - echo "Removing older images" - IMAGES_TO_DELETE=$(aws ecr list-images --region $AWS_REGION --repository-name privado-main --filter "tagStatus=UNTAGGED" --query 'imageIds[*]' --max-items 100 --output json) - echo "$IMAGES_TO_DELETE" - aws ecr batch-delete-image --region $AWS_REGION --repository-name privado-main --image-ids "$IMAGES_TO_DELETE" || true - echo Pushing the Docker images... - docker push $REPOSITORY_URI:$TAG_1 - docker push $REPOSITORY_URI:$TAG_2 - | if [[ -z "$TAG_3" ]] then echo "\$TAG_3 is empty" else docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$TAG_3-$VERSION docker push $REPOSITORY_URI:$TAG_3-$VERSION fi - echo completed pushing image to ecr