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"
|