Some checks failed
CI/CD Pipeline / Code Quality & Linting (push) Has been cancelled
CI/CD Pipeline / Policy Validation (push) Has been cancelled
CI/CD Pipeline / Test Suite (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-coverage) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-extract) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-firm-connectors) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-forms) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-hmrc) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-ingestion) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-kg) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-normalize-map) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-ocr) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-rag-indexer) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-rag-retriever) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-reason) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (svc-rpa) (push) Has been cancelled
CI/CD Pipeline / Build Docker Images (ui-review) (push) Has been cancelled
CI/CD Pipeline / Security Scanning (svc-coverage) (push) Has been cancelled
CI/CD Pipeline / Security Scanning (svc-extract) (push) Has been cancelled
CI/CD Pipeline / Security Scanning (svc-kg) (push) Has been cancelled
CI/CD Pipeline / Security Scanning (svc-rag-retriever) (push) Has been cancelled
CI/CD Pipeline / Security Scanning (ui-review) (push) Has been cancelled
CI/CD Pipeline / Generate SBOM (push) Has been cancelled
CI/CD Pipeline / Deploy to Staging (push) Has been cancelled
CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / Notifications (push) Has been cancelled
133 lines
3.6 KiB
Bash
Executable File
133 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
||
# Build and Push Base Docker Images
|
||
# Usage: ./scripts/build-base-images.sh [registry] [version] [owner]
|
||
# Example: ./scripts/build-base-images.sh gitea.harkon.co.uk v1.0.1 harkon
|
||
|
||
set +e
|
||
|
||
# Configuration
|
||
REGISTRY="${1:-gitea.harkon.co.uk}"
|
||
VERSION="${2:-v1.0.1}"
|
||
OWNER="${3:-harkon}"
|
||
|
||
# Colors
|
||
GREEN='\033[0;32m'
|
||
BLUE='\033[0;34m'
|
||
YELLOW='\033[1;33m'
|
||
RED='\033[0;31m'
|
||
NC='\033[0m'
|
||
|
||
log_info() {
|
||
echo -e "${BLUE}ℹ️ $1${NC}"
|
||
}
|
||
|
||
log_success() {
|
||
echo -e "${GREEN}✅ $1${NC}"
|
||
}
|
||
|
||
log_warning() {
|
||
echo -e "${YELLOW}⚠️ $1${NC}"
|
||
}
|
||
|
||
log_error() {
|
||
echo -e "${RED}❌ $1${NC}"
|
||
}
|
||
|
||
# Check if Docker is running
|
||
if ! docker info > /dev/null 2>&1; then
|
||
log_error "Docker is not running. Please start Docker and try again."
|
||
exit 1
|
||
fi
|
||
|
||
# Login to registry
|
||
log_info "Logging in to registry: $REGISTRY"
|
||
docker login $REGISTRY
|
||
|
||
echo ""
|
||
log_info "Building base images for AI Tax Agent"
|
||
log_info "Registry: $REGISTRY"
|
||
log_info "Owner: $OWNER"
|
||
log_info "Version: $VERSION"
|
||
echo ""
|
||
|
||
# Build base-runtime image
|
||
log_info "Building base-runtime image (core dependencies for all services)..."
|
||
BASE_RUNTIME_IMAGE="$REGISTRY/$OWNER/base-runtime:$VERSION"
|
||
|
||
if docker build \
|
||
-t $BASE_RUNTIME_IMAGE \
|
||
-f infra/docker/base-runtime.Dockerfile \
|
||
--build-arg VERSION=$VERSION \
|
||
. ; then
|
||
|
||
log_success "Built: $BASE_RUNTIME_IMAGE"
|
||
|
||
# Push image
|
||
log_info "Pushing: $BASE_RUNTIME_IMAGE"
|
||
if docker push $BASE_RUNTIME_IMAGE; then
|
||
log_success "Pushed: $BASE_RUNTIME_IMAGE"
|
||
else
|
||
log_error "Failed to push: $BASE_RUNTIME_IMAGE"
|
||
fi
|
||
|
||
# Tag as latest
|
||
LATEST_IMAGE="$REGISTRY/$OWNER/base-runtime:latest"
|
||
docker tag $BASE_RUNTIME_IMAGE $LATEST_IMAGE
|
||
if docker push $LATEST_IMAGE; then
|
||
log_success "Also pushed as: $LATEST_IMAGE"
|
||
fi
|
||
else
|
||
log_error "Failed to build: $BASE_RUNTIME_IMAGE"
|
||
fi
|
||
|
||
echo ""
|
||
|
||
# Build base-ml image
|
||
log_info "Building base-ml image (ML dependencies - this will take 5-10 minutes)..."
|
||
BASE_ML_IMAGE="$REGISTRY/$OWNER/base-ml:$VERSION"
|
||
|
||
if docker build \
|
||
-t $BASE_ML_IMAGE \
|
||
-f infra/docker/base-ml.Dockerfile \
|
||
--build-arg VERSION=$VERSION \
|
||
. ; then
|
||
|
||
log_success "Built: $BASE_ML_IMAGE"
|
||
|
||
# Push image
|
||
log_info "Pushing: $BASE_ML_IMAGE (this will take a few minutes)..."
|
||
if docker push $BASE_ML_IMAGE; then
|
||
log_success "Pushed: $BASE_ML_IMAGE"
|
||
else
|
||
log_error "Failed to push: $BASE_ML_IMAGE"
|
||
fi
|
||
|
||
# Tag as latest
|
||
LATEST_IMAGE="$REGISTRY/$OWNER/base-ml:latest"
|
||
docker tag $BASE_ML_IMAGE $LATEST_IMAGE
|
||
if docker push $LATEST_IMAGE; then
|
||
log_success "Also pushed as: $LATEST_IMAGE"
|
||
fi
|
||
else
|
||
log_error "Failed to build: $BASE_ML_IMAGE"
|
||
fi
|
||
|
||
echo ""
|
||
log_success "🎉 Base images built and pushed successfully!"
|
||
echo ""
|
||
echo "Summary:"
|
||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||
echo " $REGISTRY/$OWNER/base-runtime:$VERSION (~300MB)"
|
||
echo " $REGISTRY/$OWNER/base-ml:$VERSION (~1.2GB)"
|
||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||
echo ""
|
||
log_info "Next steps:"
|
||
echo " 1. Update ML service Dockerfiles to use base-ml image"
|
||
echo " 2. Update non-ML service Dockerfiles to use base-runtime image (optional)"
|
||
echo " 3. Rebuild services with: ./scripts/build-and-push-images.sh"
|
||
echo ""
|
||
log_info "Check image sizes:"
|
||
echo " docker images | grep '$REGISTRY/$OWNER/base'"
|
||
echo ""
|
||
|