Creating Project Files

هذا الالتزام موجود في:
ahmedgamalyousef
2025-09-25 16:11:56 +03:00
الأصل c9bd52fad0
التزام fb7be3f518
4 ملفات معدلة مع 583 إضافات و0 حذوفات

123
CICDpipeline.sh Executable file
عرض الملف

@@ -0,0 +1,123 @@
#!/usr/bin/bash
# Weather App Deployment Script
set -e # Exit on error
echo "🌤️ Weather App Deployment"
# Get project name from user
echo "📝 Enter your Ghaymah PROJECT name:"
read project_name
# Validate project name
if [ -z "$project_name" ]; then
echo "❌ Project name cannot be empty!"
exit 1
fi
# Get app name from user
echo "📝 Enter your APP name (this will be the deployed application name):"
read app_name
# Validate app name
if [ -z "$app_name" ]; then
echo "❌ App name cannot be empty!"
exit 1
fi
# Configuration
IMAGENAME="$app_name" # Use app name for image
DOCKER_USERNAME="ahmedgamalyousef" # Your Docker Hub username
echo "🚀 Starting deployment..."
echo " Project: ${project_name}"
echo " App: ${app_name}"
echo " Image: ${IMAGENAME}"
# Build Docker image
echo "🏗️ Building ${IMAGENAME} image..."
# Get current tag and increment
tag=$(docker image ls | grep ${IMAGENAME} | awk '{print $2}' | head -1)
if [ -z "${tag}" ]; then
new_tag=1
echo "📌 No existing image found, starting with version 1"
else
echo "📌 Found existing tag: ${tag}"
docker rmi ${IMAGENAME}:${tag} || echo "⚠️ Could not remove old image, continuing..."
new_tag=$((tag + 1))
fi
# Build the image
echo "🔨 Building version ${new_tag}..."
docker build -t ${IMAGENAME}:${new_tag} .
# Push to Docker Hub
echo "📤 Pushing to Docker Hub..."
docker tag ${IMAGENAME}:${new_tag} ${DOCKER_USERNAME}/${IMAGENAME}:${new_tag}
docker push ${DOCKER_USERNAME}/${IMAGENAME}:${new_tag}
# Also tag as latest
docker tag ${IMAGENAME}:${new_tag} ${DOCKER_USERNAME}/${IMAGENAME}:latest
docker push ${DOCKER_USERNAME}/${IMAGENAME}:latest
echo "✅ Image pushed: ${DOCKER_USERNAME}/${IMAGENAME}:${new_tag}"
# Ghaymah deployment
if command -v gy &> /dev/null; then
echo "☁️ Setting up Ghaymah deployment..."
# Create project with the project name
echo "🔧 Creating project: ${project_name}"
project_id=$(gy resource project create --set .name=${project_name} | awk '/ID:/ {print $NF}')
if [ -z "$project_id" ]; then
echo "❌ Failed to get project ID"
exit 1
fi
echo "✅ Project ID: ${project_id}"
# Create .ghaymah.json configuration using both names
cat > .ghaymah.json <<EOF
{
"container": {
"image": "docker.io/${DOCKER_USERNAME}/${IMAGENAME}:${new_tag}",
"pullSecretName": ""
},
"name": "${app_name}",
"ports": [
{
"expose": true,
"number": 5000
}
],
"projectId": "${project_id}",
"publicAccess": {
"baseDomain": "hosted.ghaymah.systems",
"domain": "auto",
"enabled": true
},
"resourceTier": "t1"
}
EOF
echo "✅ Configuration file created:"
echo " - Project: ${project_name} (ID: ${project_id})"
echo " - App: ${app_name}"
echo " - Image: ${DOCKER_USERNAME}/${IMAGENAME}:${new_tag}"
# Deploy to Ghaymah
echo "🚀 Deploying to Ghaymah..."
gy resource app launch
echo "🎉 Deployment successful!"
echo "📊 Project: ${project_name}"
echo "📱 App: ${app_name}"
echo "🌐 URL: https://${app_name}.hosted.ghaymah.systems"
else
echo " Ghaymah CLI not found, skipping deployment"
echo "💡 You can deploy manually later using the created .ghaymah.json file"
fi
echo "✨ Deployment process completed!"