ai-hackaton-frontend/scripts/build-and-push.sh
2025-09-10 21:42:45 +03:00

71 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Build and push script for Yandex Cloud Container Registry
# Usage: ./scripts/build-and-push. [tag]
set -e
# Configuration
REGISTRY_ID="${YANDEX_REGISTRY_ID:-your-registry-id}"
IMAGE_NAME="hr-ai-frontend"
TAG="${1:-latest}"
FULL_IMAGE_NAME="cr.yandex/${REGISTRY_ID}/${IMAGE_NAME}:${TAG}"
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${YELLOW}Building and pushing HR AI Frontend to Yandex Cloud Container Registry${NC}"
# Check if required environment variables are set
if [ -z "$REGISTRY_ID" ] || [ "$REGISTRY_ID" = "your-registry-id" ]; then
echo -e "${RED}Error: YANDEX_REGISTRY_ID environment variable is not set${NC}"
echo "Please set it to your Yandex Cloud Container Registry ID"
echo "Example: export YANDEX_REGISTRY_ID=crp1234567890abcdef"
exit 1
fi
# Check if yc CLI is installed and authenticated
if ! command -v yc &> /dev/null; then
echo -e "${RED}Error: Yandex Cloud CLI (yc) is not installed${NC}"
echo "Please install it from: https://cloud.yandex.ru/docs/cli/quickstart"
exit 1
fi
# Check authentication
if ! yc config list | grep -q "token:"; then
echo -e "${RED}Error: Not authenticated with Yandex Cloud${NC}"
echo "Please run: yc init"
exit 1
fi
echo -e "${YELLOW}Configuring Docker for Yandex Cloud Container Registry...${NC}"
yc container registry configure-docker
echo -e "${YELLOW}Building Docker image: ${FULL_IMAGE_NAME}${NC}"
docker build -t "${FULL_IMAGE_NAME}" .
echo -e "${YELLOW}Pushing image to registry...${NC}"
docker push "${FULL_IMAGE_NAME}"
echo -e "${GREEN}✓ Successfully built and pushed: ${FULL_IMAGE_NAME}${NC}"
# Also tag as latest if a specific tag was provided
if [ "$TAG" != "latest" ]; then
LATEST_IMAGE_NAME="cr.yandex/${REGISTRY_ID}/${IMAGE_NAME}:latest"
echo -e "${YELLOW}Tagging as latest...${NC}"
docker tag "${FULL_IMAGE_NAME}" "${LATEST_IMAGE_NAME}"
docker push "${LATEST_IMAGE_NAME}"
echo -e "${GREEN}✓ Also pushed as: ${LATEST_IMAGE_NAME}${NC}"
fi
echo -e "${GREEN}Build and push completed successfully!${NC}"
echo ""
echo "Image is available at:"
echo " ${FULL_IMAGE_NAME}"
echo ""
echo "To use in production, update your docker-compose.prod.yml:"
echo " frontend:"
echo " image: ${FULL_IMAGE_NAME}"