-
Notifications
You must be signed in to change notification settings - Fork 0
129 lines (104 loc) · 4.08 KB
/
deploy-web-develop.yml
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
name: Build 🏗️ and Deploy Web 🛳️ to Develop 🚈
on:
push:
branches: ["develop"]
paths: [
"frontend/occupi-web/**",
".github/workflows/deploy-web-develop.yml"
]
workflow_dispatch:
defaults:
run:
working-directory: frontend/occupi-web
jobs:
# Build job
build-test:
name: 🏗️ Build
runs-on: ubuntu-latest
steps:
- name: ⬇️ Checkout
uses: actions/checkout@v4
- name: 🏗 Setup Bun
uses: oven-sh/setup-bun@v1
with:
bun-version: latest # or "latest", "canary", <sha>
- name: 📦 Install dependencies with Bun
run: bun install
- name: 🚀 Build with Vite.js
run: bun run build
# test docker build and up the container then down
build-test-docker:
name: 🐋 Build Test Docker Container
runs-on: ubuntu-latest
needs: build-test
steps:
- name: ⬇️ Checkout code
uses: actions/checkout@v4
# run npm install so we can get package-lock.json file since it's not in the repo due to bun
- name: 📦 Install dependencies
run: npm install
- name: 🏗 Set up QEMU
uses: docker/setup-qemu-action@v3
- name: 🏗 Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: 🐳 Build Docker image
run: |
docker build --no-cache -t ${{ secrets.DOCKER_USERNAME }}/occupi-web:latest-develop -f Dockerfile.dev .
- name: ✅ Echo success message
run: echo "Docker build successful"
build-push-docker:
name: 🐋 Build and Push Web Docker Image
runs-on: ubuntu-latest
needs: build-test-docker
steps:
- name: ⬇️ Checkout code
uses: actions/checkout@v4
# run npm install so we can get package-lock.json file since it's not in the repo due to bun
- name: 📦 Install dependencies
run: npm install
- name: 🏗 Set up QEMU
uses: docker/setup-qemu-action@v3
- name: 🏗 Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: 🧑💻 Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: 🐳 Build and push Docker image
uses: docker/build-push-action@v5
with:
context: frontend/occupi-web
file: frontend/occupi-web/Dockerfile.dev
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/occupi-web:latest-develop
deploy:
name: 🛳️ Deploy Web
runs-on: ubuntu-latest
needs: build-push-docker
steps:
- name: ⬇️ Checkout code
uses: actions/checkout@v4
- name: 🪷 Copy files to VM
uses: appleboy/[email protected]
with:
host: ${{ secrets.VM_IP }}
username: ${{ secrets.VM_USERNAME }}
key: ${{ secrets.VM_SSH_KEY }}
source: "frontend/occupi-web/docker-compose.dev.yml,frontend/occupi-web/Dockerfile.dev"
target: "/home/${{ secrets.VM_USERNAME }}/occupi-web-dev"
# SSH to VM and run commands
- name: 🚀 SSH to VM
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.VM_IP }}
username: ${{ secrets.VM_USERNAME }}
key: ${{ secrets.VM_SSH_KEY }}
script: |
cd /home/${{ secrets.VM_USERNAME }}/occupi-web-dev/frontend/occupi-web
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
DOCKER_USERNAME=${{ secrets.DOCKER_USERNAME }} docker compose -f docker-compose.dev.yml down --rmi all
docker image prune -f
DOCKER_USERNAME=${{ secrets.DOCKER_USERNAME }} docker compose -f docker-compose.dev.yml pull
DOCKER_USERNAME=${{ secrets.DOCKER_USERNAME }} docker compose -f docker-compose.dev.yml up -d