wget
https://github.com/knqyf263/trivy/releases/download/v${TRIVY_VERSION}/trivy_${TRIVY_VERSION}_Linux-
64bit.tar.gz
tar zxvf trivy_${TRIVY_VERSION}_Linux-64bit.tar.gz
# Находим при помощи цикла while все файлы, которые называются Dockerfile [8]
find . -name Dockerfile | while read -r d; do
part1=`dirname "$d"`
part2=`basename "$d"`
echo 'Folder is ' $part1
# Исключаем из сборки ненужные приложения
if [[ ! ($part1 == *"test-message-receiver"* || $part1 == *"roomkey-producer"* || $part1 == *"logus-
producer"* || $part1 == *"sample-app"* || $part1 == *"rlh-il-consumer"* || $part1 == *"generic-router"* || $part1 ==
*"generic-transformer"*) ]]; then
# Ищем название раскатываемого приложения по названию папки в Git репозитории
FULL_HAPI_APP_NAME=`echo "$part1" | sed 's#./##'`
FULL_HAPI_REPO_NAME=`echo $PROJ$ENV$SLASH$FULL_HAPI_APP_NAME`
# Вызываем конфигуратор для AWS аккаунта
aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
aws configure set default.region $AWS_DEFAULT_REGION
# И создаём репозиторий для хранения созданного образа в
# Elastic Container Repository [7]
echo 'Start create ecr for FULL_HAPI_APP_NAME: ' $FULL_HAPI_APP_NAME '- result name is
FULL_HAPI_REPO_NAME: '$FULL_HAPI_REPO_NAME
# Если репозиторий с этим именем не существует
aws ecr describe-repositories --repository-names $FULL_HAPI_REPO_NAME 2>&1 > /dev/null
status=$?
if [[ ! "${status}" -eq 0 ]]; then
echo 'Start create ecr for' $FULL_HAPI_APP_NAME '- result name is
'$FULL_HAPI_REPO_NAME
aws ecr create-repository --repository-name $FULL_HAPI_REPO_NAME
aws ecr put-lifecycle-policy --repository-name "hapi-$ENV/$FULL_HAPI_APP_NAME" --
lifecycle-policy-text "file://%system.teamcity.build.checkoutDir%/env/aws/dev/lifecycle_policy/default_policy.json"
fi
# Стартуем сборку проекта и добавление тегов для Docker [8] образов
$(aws ecr get-login --no-include-email --region %region%)
cd $PROJECT_LOCATION/$FULL_HAPI_APP_NAME
echo 'Start build and push project' $FULL_HAPI_APP_NAME 'with version tag' $version
docker build -t hapi-$ENV/$FULL_HAPI_APP_NAME .
docker tag hapi-$ENV/$FULL_HAPI_APP_NAME:latest
$ECR_ID.dkr.ecr.%region%.amazonaws.com/hapi-$ENV/$FULL_HAPI_APP_NAME:latest
docker tag hapi-$ENV/$FULL_HAPI_APP_NAME:latest
$ECR_ID.dkr.ecr.%region%.amazonaws.com/hapi-$ENV/$FULL_HAPI_APP_NAME:$version
docker tag hapi-$ENV/$FULL_HAPI_APP_NAME:latest
$ECR_ID.dkr.ecr.%region%.amazonaws.com/hapi-$ENV/$FULL_HAPI_APP_NAME:$GIT_TAG
# И выгружаем созданные образы в сервис AWS Elastic Container Repository [7]
docker push $ECR_ID.dkr.ecr.%region%.amazonaws.com/hapi-
$ENV/$FULL_HAPI_APP_NAME:latest
docker push $ECR_ID.dkr.ecr.%region%.amazonaws.com/hapi-
$ENV/$FULL_HAPI_APP_NAME:$version
docker push $ECR_ID.dkr.ecr.%region%.amazonaws.com/hapi-
$ENV/$FULL_HAPI_APP_NAME:$GIT_TAG
# Запускаем проверку образов на уязвимости при помощи утилиты Trivy [19]
echo 'Scan trivy start'
trivy --exit-code 1 --severity HIGH --quiet --auto-refresh
$ECR_ID.dkr.ecr.%region%.amazonaws.com/hapi-$ENV/$FULL_HAPI_APP_NAME:$GIT_TAG |& tee -a
$PROJECT_LOCATION/report.txt
trivy --exit-code 1 --severity CRITICAL --quiet --auto-refresh
$ECR_ID.dkr.ecr.%region%.amazonaws.com/hapi-$ENV/$FULL_HAPI_APP_NAME:$GIT_TAG |& tee -a
$PROJECT_LOCATION/report_critical.txt