name: Deploy to Dev on: push: branches: [ main, master, develop, dev ] jobs: deploy-dev: runs-on: ubuntu-latest steps: - name: Setup SSH Key run: | echo "=== Checking SSH_PRIVATE_KEY secret ===" if [ -z "$SSH_PRIVATE_KEY" ]; then echo "ERROR: SSH_PRIVATE_KEY environment variable is empty!" echo "Checking secrets directly..." if [ -z "${{ secrets.SSH_PRIVATE_KEY }}" ]; then echo "ERROR: secrets.SSH_PRIVATE_KEY is also empty!" exit 1 else echo "secrets.SSH_PRIVATE_KEY exists, length: ${#{{ secrets.SSH_PRIVATE_KEY }}}" fi else echo "SSH_PRIVATE_KEY env var exists, length: ${#SSH_PRIVATE_KEY}" fi mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key echo "SSH key file created. Checking format..." head -1 ~/.ssh/deploy_key tail -1 ~/.ssh/deploy_key wc -l ~/.ssh/deploy_key ssh-keyscan -H ${{ secrets.DEV_HOST }} >> ~/.ssh/known_hosts 2>/dev/null || true env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} - name: Deploy to Dev Server uses: appleboy/ssh-action@v1.0.0 with: host: ${{ secrets.DEV_HOST }} username: ${{ secrets.DEV_USER }} key_path: ~/.ssh/deploy_key use_insecure_cipher: true debug: true script: | set -e cd /var/www/platform/dev echo "đŸ“Ļ Pulling latest changes from repository..." git pull origin main || git pull origin master || git pull origin develop || git pull origin dev || true echo "🔄 Restarting Docker services..." docker compose restart echo "📊 Running migrations (if needed)..." docker compose exec -T web python manage.py migrate || true echo "📁 Collecting static files (if needed)..." docker compose exec -T web python manage.py collectstatic --noinput || true echo "✅ Dev deployment completed successfully" echo "â„šī¸ You can continue working directly on the server" - name: Health Check uses: appleboy/ssh-action@v1.0.0 with: host: ${{ secrets.DEV_HOST }} username: ${{ secrets.DEV_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} use_insecure_cipher: true debug: true script: | sleep 10 docker compose ps curl -f http://localhost:8124/health/ || exit 1 echo "✅ Health check passed"