- Remove deploy-s2i-simple.sh (duplicate functionality) - Remove openshift-s2i.yaml template (unnecessary complexity) - Simplify deploy-s2i.sh to single script approach - Reduce repository clutter and maintenance overhead - Keep only essential scripts: deploy-s2i.sh, deploy-complete.sh, build-and-push.sh, undeploy-complete.sh - Maintain clean, focused codebase
77 lines
1.9 KiB
Bash
Executable File
77 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Deploy ORU Analyzer using Source-to-Image (S2I)
|
|
|
|
set -e
|
|
|
|
echo "🚀 ORU Analyzer S2I Deployment"
|
|
echo "==============================="
|
|
|
|
# Default values
|
|
NAMESPACE="resource-governance"
|
|
APP_NAME="oru-analyzer"
|
|
GIT_REPO="https://github.com/andersonid/openshift-resource-governance.git"
|
|
|
|
# Check prerequisites
|
|
if ! command -v oc >/dev/null 2>&1; then
|
|
echo "❌ OpenShift CLI (oc) not found. Please install it first."
|
|
exit 1
|
|
fi
|
|
|
|
if ! oc whoami >/dev/null 2>&1; then
|
|
echo "❌ Not logged in to OpenShift. Please run 'oc login' first"
|
|
exit 1
|
|
fi
|
|
|
|
# Create namespace
|
|
echo "📦 Creating namespace..."
|
|
oc new-project "$NAMESPACE" 2>/dev/null || echo "Namespace already exists"
|
|
|
|
# Deploy with oc new-app
|
|
echo "🚀 Deploying with oc new-app..."
|
|
oc new-app python:3.11~"$GIT_REPO" \
|
|
--name="$APP_NAME" \
|
|
--env=PYTHON_VERSION=3.11 \
|
|
--env=APP_ROOT=/app \
|
|
--namespace="$NAMESPACE"
|
|
|
|
# Configure resources
|
|
echo "⚙️ Configuring resources..."
|
|
oc patch deploymentconfig/"$APP_NAME" -p '{
|
|
"spec": {
|
|
"template": {
|
|
"spec": {
|
|
"containers": [{
|
|
"name": "'"$APP_NAME"'",
|
|
"resources": {
|
|
"requests": {"cpu": "50m", "memory": "64Mi"},
|
|
"limits": {"cpu": "200m", "memory": "256Mi"}
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
}
|
|
}'
|
|
|
|
# Wait for build and deployment
|
|
echo "⏳ Waiting for build and deployment..."
|
|
oc logs -f buildconfig/"$APP_NAME" &
|
|
BUILD_PID=$!
|
|
|
|
# Wait for build to complete
|
|
oc wait --for=condition=Complete buildconfig/"$APP_NAME" --timeout=600s
|
|
kill $BUILD_PID 2>/dev/null || true
|
|
|
|
# Wait for deployment
|
|
oc rollout status deploymentconfig/"$APP_NAME" --timeout=300s
|
|
|
|
# Get URL
|
|
ROUTE_URL=$(oc get route "$APP_NAME" -o jsonpath='{.spec.host}' 2>/dev/null || echo "")
|
|
|
|
echo ""
|
|
echo "✅ Deployment Complete!"
|
|
echo "🌐 Application URL: https://$ROUTE_URL"
|
|
echo ""
|
|
echo "📊 Check status:"
|
|
echo " oc get pods -n $NAMESPACE"
|
|
echo " oc logs -f deploymentconfig/$APP_NAME -n $NAMESPACE"
|