From e79c20c733e67729dc876eded9cc1156e8600647 Mon Sep 17 00:00:00 2001 From: ahmedgamalyousef Date: Tue, 7 Oct 2025 23:21:38 +0300 Subject: [PATCH] Updating CICD Workflow --- .github/workflows/cicd.yaml | 94 ++++++++++++++++++++++++++++++++----- 1 file changed, 82 insertions(+), 12 deletions(-) diff --git a/.github/workflows/cicd.yaml b/.github/workflows/cicd.yaml index 5ca5f3e..763f121 100644 --- a/.github/workflows/cicd.yaml +++ b/.github/workflows/cicd.yaml @@ -22,15 +22,85 @@ jobs: tags: ahmedgamalyousef/weatherapp:latest deploy: - needs: build_and_push_image - steps: - - name: checkout code - uses: actions/checkout@v5.0.0 - - name: install ghaymah cli - run: curl -sSl https://cli.ghaymah.systems/install.sh | bash - - - name: login to ghaymah - run: $HOME/ghaymah/bin/gy auth login --email "${{secrets.GHAYMAH_EMAIL}}" --password "${{secrets.GHAYMAH_PASSWORD}}" - - - name: deploy - run: $HOME/ghaymah/bin/gy resource app launch \ No newline at end of file + needs: build_and_push_image + runs-on: ubuntu-latest + 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!" \ No newline at end of file