الملفات
Complete-CI-CD-Project-pipe…/.github/workflows/cicd.yaml
Workflow config file is invalid. Please check your config file: yaml: line 66: could not find expected ':'
2025-10-07 23:22:17 +03:00

105 أسطر
3.0 KiB
YAML

on:
push:
pull_request:
jobs:
build_and_push_image:
steps:
- name: checkout code
uses: actions/checkout@v5.0.0
- name: login to dockerhub
uses: docker/login-action@v3.6.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: ahmedgamalyousef/weatherapp:latest
deploy:
needs: build_and_push_image
env:
PROJECT_NAME: ${{ github.event.repository.name }}-project
APP_NAME: ${{ github.event.repository.name }}
DOCKER_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
IMAGE_NAME: ${{ github.event.repository.name }}
IMAGE_TAG: latest
steps:
- name: Checkout code
uses: actions/checkout@v5.0.0
- name: Install Ghaymah CLI
run: |
echo "📥 Installing Ghaymah CLI..."
curl -sSL https://cli.ghaymah.systems/install.sh | bash
echo "✅ Ghaymah CLI installed"
- name: Login to Ghaymah
run: |
echo "🔐 Authenticating with Ghaymah..."
$HOME/ghaymah/bin/gy auth login --email "${{ secrets.GHAYMAH_EMAIL }}" --password "${{ secrets.GHAYMAH_PASSWORD }}"
echo "✅ Successfully logged in to Ghaymah"
- name: Setup Ghaymah deployment
run: |
echo "☁️ Setting up Ghaymah deployment..."
# Create project
echo "🔧 Creating project: $PROJECT_NAME"
PROJECT_ID=$($HOME/ghaymah/bin/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
cat > .ghaymah.json << EOF
{
"container": {
"image": "docker.io/${DOCKER_USERNAME}/${IMAGE_NAME}:${IMAGE_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}/${IMAGE_NAME}:${IMAGE_TAG}"
- name: Deploy to Ghaymah
run: |
echo "🚀 Deploying to Ghaymah..."
$HOME/ghaymah/bin/gy resource app launch
echo "✅ Deployment successful!"
- name: Show deployment info
run: |
echo "🎉 Deployment completed!"
echo "📊 Project: $PROJECT_NAME"
echo "📱 App: $APP_NAME"
echo "🌐 URL: https://${APP_NAME}.hosted.ghaymah.systems"
echo "✨ Deployment process completed!"