54 lines
1.9 KiB
Bash
Executable File
54 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 2026-03-11 10:02
|
|
# Скрипт: собирает минимальный образ и, при разрешении, пушит в реестр PearlHarbor
|
|
# Требования: `docker` в PATH. Скрипт НЕ будет пушить без DO_PUSH=true.
|
|
|
|
set -euo pipefail
|
|
|
|
# Получаем значения из файла секретов
|
|
SECRETS_FILE="secrets/pearlharbor_registry.txt"
|
|
if [ ! -f "$SECRETS_FILE" ]; then
|
|
echo "Файл с секретами не найден: $SECRETS_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
connection_url=$(grep -E '^connection_url=' "$SECRETS_FILE" | cut -d'=' -f2-)
|
|
admin_pass=$(grep -E '^admin_pass=' "$SECRETS_FILE" | cut -d'=' -f2-)
|
|
|
|
if [ -z "$connection_url" ]; then
|
|
echo "Не найден connection_url в $SECRETS_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# Убираем протокол и возможный слеш на конце
|
|
registry_host=$(echo "$connection_url" | sed -E 's~https?://~~' | sed -E 's~/$~~')
|
|
|
|
image_name="$registry_host/sless-sample:latest"
|
|
|
|
echo "Registry host: $registry_host"
|
|
echo "Image name: $image_name"
|
|
|
|
echo "Собираю образ локально..."
|
|
docker build -t sless-sample:local -f Dockerfile .. || {
|
|
echo "Сборка не удалась"; exit 1
|
|
}
|
|
|
|
echo "Готово. Образ: sless-sample:local"
|
|
|
|
if [ "${DO_PUSH:-}" != "true" ]; then
|
|
echo "DO_PUSH != true — пуш не будет выполнен. Чтобы запушить: DO_PUSH=true ./build_and_push.sh"
|
|
exit 0
|
|
fi
|
|
|
|
# Если дошли до сюда — выполняем login/push
|
|
registry_user=${REGISTRY_USER:-admin}
|
|
|
|
echo "Выполняю docker login к $registry_host как '$registry_user'"
|
|
echo "$admin_pass" | docker login "$registry_host" -u "$registry_user" --password-stdin
|
|
|
|
echo "Тегирую и пушу образ: $image_name"
|
|
docker tag sless-sample:local "$image_name"
|
|
docker push "$image_name"
|
|
|
|
echo "Пуш завершён. Проверьте реестр для образа: $image_name"
|