Files
go-speech/shell/build-n-export.sh
2025-11-28 17:43:00 +06:00

86 lines
3.4 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Скрипт для сборки Podman образа и опционального экспорта в tar.gz
# Использование: ./build-n-export.sh <base_image> <registry> <image_name> <version> [export]
# Пример: ./build-n-export.sh registry.altlinux.org/alt/base:p10 kuznetcovay go-speech v1.0.4 true
# ./build-n-export.sh registry.altlinux.org/alt/base:p10 kuznetcovay go-speech v1.0.4 false (только сборка)
set -e # Остановка при ошибке
# Проверка аргументов
if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ]; then
echo "Ошибка: Недостаточно аргументов"
echo "Использование: $0 <base_image> <registry> <image_name> <version> [export]"
echo " base_image - базовый образ для второго этапа сборки (например: registry.altlinux.org/alt/base:p10)"
echo " registry - реестр для образа"
echo " image_name - имя образа"
echo " version - версия образа"
echo " export - true/yes/1 - экспортировать образ (по умолчанию: false)"
echo ""
echo "Пример: $0 registry.altlinux.org/alt/base:p10 kuznetcovay go-speech v1.0.4 true"
echo " $0 registry.altlinux.org/alt/base:p10 kuznetcovay go-speech v1.0.4 false (только сборка)"
exit 1
fi
BASE_IMAGE="$1"
REGISTRY="$2"
IMAGE_NAME="$3"
VERSION="$4"
EXPORT="${5:-false}" # По умолчанию false, если не указано
FULL_IMAGE_NAME="${REGISTRY}/${IMAGE_NAME}:${VERSION}"
OUTPUT_FILE="go-speech-${VERSION}.tar.gz"
# Сохранение версии в VERSION.txt
echo "${VERSION}" > VERSION.txt
echo "✓ Версия сохранена в VERSION.txt: ${VERSION}"
# Нормализация значения export (приводим к нижнему регистру)
EXPORT=$(echo "$EXPORT" | tr '[:upper:]' '[:lower:]')
# Проверка значения export
if [[ "$EXPORT" == "true" || "$EXPORT" == "yes" || "$EXPORT" == "1" ]]; then
DO_EXPORT=true
else
DO_EXPORT=false
fi
echo "=== Сборка Podman образа ==="
echo "Базовый образ: ${BASE_IMAGE}"
echo "Образ: ${FULL_IMAGE_NAME}"
echo "Экспорт: ${DO_EXPORT}"
echo ""
# Сборка образа с передачей базового образа через build arg
podman build --build-arg BASE_IMAGE="${BASE_IMAGE}" -t "${FULL_IMAGE_NAME}" .
if [ $? -ne 0 ]; then
echo "Ошибка: Не удалось собрать образ"
exit 1
fi
echo ""
echo "✓ Образ успешно собран"
echo ""
# Экспорт образа в tar.gz (только если указано)
if [ "$DO_EXPORT" = true ]; then
echo "=== Экспорт образа в tar.gz ==="
echo "Файл: ${OUTPUT_FILE}"
echo ""
podman save "${FULL_IMAGE_NAME}" | gzip > "${OUTPUT_FILE}"
if [ $? -ne 0 ]; then
echo "Ошибка: Не удалось экспортировать образ"
exit 1
fi
# Проверка размера файла
FILE_SIZE=$(du -h "${OUTPUT_FILE}" | cut -f1)
echo "✓ Образ успешно экспортирован"
echo "Размер файла: ${FILE_SIZE}"
echo ""
echo "Файл сохранен: ${OUTPUT_FILE}"
else
echo "Экспорт пропущен (параметр export = false)"
fi