ship script
This commit is contained in:
110
scripts/ship.sh
Normal file
110
scripts/ship.sh
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
|
||||||
|
|
||||||
|
# X Poster Build & Deploy Script
|
||||||
|
|
||||||
|
REGISTRY="harbor.scottyah.com"
|
||||||
|
NAMESPACE="scottyah"
|
||||||
|
IMAGE_NAME="blog"
|
||||||
|
FULL_IMAGE="${REGISTRY}/${NAMESPACE}/${IMAGE_NAME}"
|
||||||
|
|
||||||
|
# Parse flags
|
||||||
|
BUILD_ONLY=false
|
||||||
|
DEPLOY_ONLY=false
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
--build-only)
|
||||||
|
BUILD_ONLY=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--deploy-only)
|
||||||
|
DEPLOY_ONLY=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
echo "Usage: ./ship.sh [OPTIONS]"
|
||||||
|
echo ""
|
||||||
|
echo "Build and deploy X Poster to Kubernetes"
|
||||||
|
echo ""
|
||||||
|
echo "Options:"
|
||||||
|
echo " --build-only Only build and push Docker image"
|
||||||
|
echo " --deploy-only Only deploy to Kubernetes (skip build)"
|
||||||
|
echo " -h, --help Show this help message"
|
||||||
|
echo ""
|
||||||
|
echo "Examples:"
|
||||||
|
echo " ./ship.sh # Build and deploy"
|
||||||
|
echo " ./ship.sh --build-only # Only build"
|
||||||
|
echo " ./ship.sh --deploy-only # Only deploy"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $1"
|
||||||
|
echo "Use --help for usage information"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# BUILD PHASE
|
||||||
|
if [ "$DEPLOY_ONLY" = false ]; then
|
||||||
|
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
|
||||||
|
|
||||||
|
# Tags
|
||||||
|
TAG_TIMESTAMP="${FULL_IMAGE}:${TIMESTAMP}"
|
||||||
|
TAG_LATEST="${FULL_IMAGE}:latest"
|
||||||
|
|
||||||
|
echo "🐦 Building Blog Docker image..."
|
||||||
|
echo "Registry: ${REGISTRY}"
|
||||||
|
echo "Image: ${FULL_IMAGE}"
|
||||||
|
echo "Timestamp: ${TIMESTAMP}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Build image
|
||||||
|
echo "Building Docker image..."
|
||||||
|
docker build \
|
||||||
|
--network=host \
|
||||||
|
-t "${TAG_TIMESTAMP}" \
|
||||||
|
-t "${TAG_LATEST}" \
|
||||||
|
"$SCRIPT_DIR/.."
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "✅ Build complete!"
|
||||||
|
echo ""
|
||||||
|
echo "Tagged as:"
|
||||||
|
echo " - ${TAG_TIMESTAMP}"
|
||||||
|
echo " - ${TAG_LATEST}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Push images
|
||||||
|
echo "Pushing images to registry..."
|
||||||
|
docker push "${TAG_TIMESTAMP}"
|
||||||
|
docker push "${TAG_LATEST}"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🚀 Images pushed to Harbor registry!"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# DEPLOY PHASE
|
||||||
|
if [ "$BUILD_ONLY" = false ]; then
|
||||||
|
echo "🐦 Deploying Blog to Kubernetes..."
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Apply Kubernetes configuration
|
||||||
|
echo "Applying Kubernetes configuration..."
|
||||||
|
kubectl apply -f "$SCRIPT_DIR/../k8s.yaml"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Waiting for namespace to be ready..."
|
||||||
|
kubectl wait --for=condition=Ready --timeout=10s namespace/blog 2>/dev/null || true
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "✅ Deployment complete!"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$BUILD_ONLY" = false ] && [ "$DEPLOY_ONLY" = false ]; then
|
||||||
|
echo "✨ Build and deployment complete!"
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user