78 lines
3.1 KiB
YAML
78 lines
3.1 KiB
YAML
version: 0.2
|
|
|
|
env:
|
|
shell: bash
|
|
exported-variables:
|
|
- BSS_IMAGE_ASSET_REPOSITORY_NAME
|
|
- BUILD_VERSION
|
|
- CN_ASSETS
|
|
- GLOBAL_ASSETS
|
|
- ECR_REPOS
|
|
- CN_ECR_REPOS
|
|
- TAG_NUMBER
|
|
|
|
phases:
|
|
install:
|
|
runtime-versions:
|
|
nodejs: 18
|
|
commands:
|
|
- echo "nothing to do in install"
|
|
pre_build:
|
|
commands:
|
|
- cd infrastructure
|
|
- export BSS_IMAGE_ASSET_REPOSITORY_NAME='stable-diffusion-aws-extension'
|
|
- export TAG_NAME=$(curl -s https://api.github.com/repos/awslabs/stable-diffusion-aws-extension/tags | jq -r '.[0].name')
|
|
# Retry logic for fetching TAG_NAME
|
|
- |-
|
|
MAX_RETRIES=5
|
|
RETRY_COUNT=0
|
|
until [[ ! -z "$TAG_NAME" || $RETRY_COUNT -eq $MAX_RETRIES ]]
|
|
do
|
|
export TAG_NAME=$(curl -s https://api.github.com/repos/awslabs/stable-diffusion-aws-extension/tags | jq -r '.[0].name')
|
|
if [[ -z "$TAG_NAME" ]]; then
|
|
let RETRY_COUNT=RETRY_COUNT+1
|
|
echo "TAG_NAME is empty, retrying ($RETRY_COUNT/$MAX_RETRIES)..."
|
|
sleep 5 # wait for 5 seconds before retrying
|
|
fi
|
|
done
|
|
|
|
if [[ -z "$TAG_NAME" ]]; then
|
|
echo "Failed to fetch TAG_NAME after $MAX_RETRIES attempts."
|
|
exit 1
|
|
fi
|
|
- export BUILD_VERSION=${TAG_NAME}-${CODEBUILD_RESOLVED_SOURCE_VERSION:0:7}
|
|
- export CN_ASSETS='cn/'
|
|
- export TAG_NUMBER="${TAG_NAME#v}"
|
|
- |-
|
|
set -euxo pipefail
|
|
__dir="${CODEBUILD_SRC_DIR}/deployment"
|
|
function join_by { local IFS="$1"; shift; echo "$*"; }
|
|
export CN_ECR_REPOS=$(join_by , `cat "${__dir}/cn-ecr-repos"`)
|
|
- export GLOBAL_ASSETS='custom-domain/,default/'
|
|
build:
|
|
commands:
|
|
- echo "Starting build the public ECR"
|
|
- cd ../build_scripts
|
|
- chmod +x ./build_and_push_inference_private.sh
|
|
- json_output=$(aws sts assume-role --role-arn "$AWS_ASSET_PUBLISH_ROLE" --role-session-name "asset-publishing-role" --duration-seconds "3600" 2>&1)
|
|
- set +x
|
|
- export AWS_ACCESS_KEY_ID=$(echo "${json_output}" | jq --raw-output ".Credentials[\"AccessKeyId\"]")
|
|
- export AWS_SECRET_ACCESS_KEY=$(echo "${json_output}" | jq --raw-output ".Credentials[\"SecretAccessKey\"]")
|
|
- export AWS_SESSION_TOKEN=$(echo "${json_output}" | jq --raw-output ".Credentials[\"SessionToken\"]")
|
|
- echo "BUILD VERSION is ${BUILD_VERSION}"
|
|
- echo "./build_and_push_inference_private.sh Dockerfile.inference.from_scratch esd-inference dev ${REGION} ${BUILD_VERSION} ${CODEBUILD_RESOLVED_SOURCE_VERSION}"
|
|
- ./build_and_push_inference_private.sh Dockerfile.inference.from_scratch esd-inference dev ${REGION} ${BUILD_VERSION} ${CODEBUILD_RESOLVED_SOURCE_VERSION}
|
|
# - ./build_and_push_training_private.sh Dockerfile.dreambooth.from_scratch esd-training dev ${REGION} ${BUILD_VERSION} ${CODEBUILD_RESOLVED_SOURCE_VERSION}
|
|
- unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
|
|
- set -x
|
|
|
|
artifacts:
|
|
files:
|
|
- deployment/**/*
|
|
- infrastructure/**/*
|
|
- middleware_api/**/*
|
|
- .gitignore
|
|
- sonar-project.properties
|
|
- buildspec.yml
|
|
- CHANGELOG.md
|
|
- .cfnnag_* |