fix: change deployment path to home directory to avoid permission issues #32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Deploy to Production | |
| on: | |
| push: | |
| branches: | |
| - main | |
| workflow_dispatch: # Allow manual triggers | |
| jobs: | |
| deploy: | |
| name: Deploy to Server | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup SSH | |
| run: | | |
| mkdir -p ~/.ssh | |
| echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa | |
| chmod 600 ~/.ssh/id_rsa | |
| ssh-keyscan -H ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts | |
| - name: Create .env file | |
| run: | | |
| mkdir -p server | |
| printf 'FLIGHT_DATA_SOURCE=adsblol\nADSB_LOL_LAT=0\nADSB_LOL_LON=0\nADSB_LOL_RADIUS=25000\nAISSTREAM_API_KEY=%s\nOPENROUTER_API_KEY=%s\nCLOUDFLARE_RADAR_TOKEN=%s\n' \ | |
| "${{ secrets.AISSTREAM_API_KEY }}" \ | |
| "${{ secrets.OPENROUTER_API_KEY }}" \ | |
| "${{ secrets.CLOUDFLARE_RADAR_TOKEN }}" > server/.env | |
| - name: Upload .env to server | |
| env: | |
| SERVER_IP: ${{ secrets.SERVER_IP }} | |
| SERVER_USER: ${{ secrets.SERVER_USER }} | |
| run: | | |
| ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "mkdir -p ~/radar/server" | |
| scp -o StrictHostKeyChecking=no server/.env $SERVER_USER@$SERVER_IP:~/radar/server/.env | |
| - name: Deploy to server | |
| env: | |
| SERVER_IP: ${{ secrets.SERVER_IP }} | |
| SERVER_USER: ${{ secrets.SERVER_USER }} | |
| run: | | |
| ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP 'bash -s' << 'ENDSSH' | |
| set -e | |
| echo "=== Starting deployment ===" | |
| mkdir -p ~/radar | |
| cd ~/radar | |
| echo "Pulling latest code..." | |
| if [ -d ".git" ]; then | |
| git fetch origin | |
| git reset --hard origin/main | |
| else | |
| git clone https://github.com/Syntax-Error-1337/radar.git . | |
| fi | |
| echo "Stopping containers..." | |
| docker-compose down || true | |
| docker image prune -f | |
| echo "Building and starting containers..." | |
| docker-compose up -d --build | |
| echo "Waiting for application to start..." | |
| sleep 10 | |
| docker-compose ps | |
| echo "=== Deployment complete ===" | |
| ENDSSH | |
| - name: Verify deployment | |
| env: | |
| SERVER_IP: ${{ secrets.SERVER_IP }} | |
| SERVER_USER: ${{ secrets.SERVER_USER }} | |
| run: | | |
| ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP << 'ENDSSH' | |
| # Check if container is running | |
| if docker ps | grep -q radar; then | |
| echo "✅ Container is running" | |
| # Test health endpoint | |
| sleep 5 | |
| if curl -f http://localhost:3001/health > /dev/null 2>&1; then | |
| echo "✅ Health check passed" | |
| else | |
| echo "⚠️ Health check failed" | |
| docker logs radar --tail=50 | |
| exit 1 | |
| fi | |
| else | |
| echo "❌ Container failed to start" | |
| docker logs radar --tail=50 | |
| exit 1 | |
| fi | |
| ENDSSH | |
| - name: Notify deployment status | |
| if: always() | |
| run: | | |
| if [ ${{ job.status }} == 'success' ]; then | |
| echo "🚀 Deployment successful!" | |
| echo "Application URL: http://${{ secrets.SERVER_IP }}:3001" | |
| else | |
| echo "❌ Deployment failed!" | |
| fi |