@@ -2,12 +2,21 @@ name: Deploy the frontend
22on :
33 push :
44 branches : [main]
5+ paths :
6+ - ' apps/collabydraw/**'
7+ - ' packages/**'
8+ - ' .github/workflows/cd_frontend.yml'
59jobs :
6- build :
10+ build-and-deploy :
711 runs-on : ubuntu-latest
812 steps :
913 - name : Checkout the code
1014 uses : actions/checkout@v4
15+ with :
16+ fetch-depth : 2
17+
18+ - name : Set up Docker Buildx
19+ uses : docker/setup-buildx-action@v3
1120
1221 - name : Docker login
1322 uses : docker/login-action@v3
@@ -17,22 +26,45 @@ jobs:
1726
1827 - name : Verify secrets
1928 run : |
20- if [ -z "${{ secrets.DATABASE_URL }}" ]; then
21- echo "Error: DATABASE_URL secret is not set"
22- exit 1
23- fi
24- if [ -z "${{ secrets.JWT_SECRET }}" ]; then
25- echo "Error: JWT_SECRET secret is not set"
26- exit 1
27- fi
29+ secrets_valid=true
30+ for secret in DATABASE_URL JWT_SECRET WEBSOCKET_URL; do
31+ if [ -z "${{ secrets[secret] }}" ]; then
32+ echo "Error: $secret secret is not set"
33+ secrets_valid=false
34+ fi
35+ done
36+ $secrets_valid
2837
29- - name : Build and push
38+ - name : Build and push Frontend
3039 uses : docker/build-push-action@v5
3140 with :
3241 context : .
3342 file : ./docker/Dockerfile.frontend
43+ provenance : false
3444 build-args : |
3545 DATABASE_URL=${{ secrets.DATABASE_URL }}
3646 JWT_SECRET=${{ secrets.JWT_SECRET }}
47+ WEBSOCKET_URL=${{ secrets.WEBSOCKET_URL }}
3748 push : true
38- tags : coderomm/collabydraw:${{ github.sha }}
49+ tags : |
50+ coderomm/collabydraw:latest
51+ coderomm/collabydraw:${{ github.sha }}
52+
53+ - name : Deploy to VM
54+ uses : appleboy/ssh-action@master
55+ with :
56+ host : ${{ secrets.VM_HOST }}
57+ username : ${{ secrets.VM_USERNAME }}
58+ key : ${{ secrets.SSH_PRIVATE_KEY }}
59+ script : |
60+ docker pull coderomm/collabydraw:${{ github.sha }}
61+ docker stop collabydraw-frontend || true
62+ docker rm collabydraw-frontend || true
63+ docker run -d \
64+ --name collabydraw-frontend \
65+ -p 3000:3000 \
66+ -e DATABASE_URL=${{ secrets.DATABASE_URL }} \
67+ -e JWT_SECRET=${{ secrets.JWT_SECRET }} \
68+ -e WEBSOCKET_URL=${{ secrets.WEBSOCKET_URL }} \
69+ coderomm/collabydraw:${{ github.sha }}
70+
0 commit comments