-
Notifications
You must be signed in to change notification settings - Fork 3
111 lines (92 loc) · 3.36 KB
/
deploy.yml
File metadata and controls
111 lines (92 loc) · 3.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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 /opt/radar/server"
scp -o StrictHostKeyChecking=no server/.env $SERVER_USER@$SERVER_IP:/opt/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 ==="
cd /opt/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