Skip to content

fix: change deployment path to home directory to avoid permission issues #32

fix: change deployment path to home directory to avoid permission issues

fix: change deployment path to home directory to avoid permission issues #32

Workflow file for this run

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