105 أسطر
3.0 KiB
YAML
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!" |