-
Notifications
You must be signed in to change notification settings - Fork 0
130 lines (106 loc) · 3.57 KB
/
Copy pathrelease-dev.yml
File metadata and controls
130 lines (106 loc) · 3.57 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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Release Dev
on:
push:
tags:
- "*-dev.*"
env:
REGISTRY: ghcr.io
IMAGE_NAMESPACE: hervibest
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set version from tag
run: echo "VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
- name: Login to GitHub Container Registry
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | \
docker login ghcr.io \
-u ${{ github.actor }} \
--password-stdin
# ======================
# photo-svc
# ======================
- name: Build & Push photo-svc
run: |
docker build \
-f photo-svc/Dockerfile \
-t $REGISTRY/$IMAGE_NAMESPACE/photo-svc:$VERSION .
docker push $REGISTRY/$IMAGE_NAMESPACE/photo-svc:$VERSION
# ======================
# upload-svc
# ======================
- name: Build & Push upload-svc
run: |
docker build \
-f upload-svc/Dockerfile \
-t $REGISTRY/$IMAGE_NAMESPACE/upload-svc:$VERSION .
docker push $REGISTRY/$IMAGE_NAMESPACE/upload-svc:$VERSION
# ======================
# user-svc
# ======================
- name: Build & Push user-svc
run: |
docker build \
-f user-svc/Dockerfile \
-t $REGISTRY/$IMAGE_NAMESPACE/user-svc:$VERSION .
docker push $REGISTRY/$IMAGE_NAMESPACE/user-svc:$VERSION
# ======================
# transaction-svc
# ======================
- name: Build & Push transaction-svc
run: |
docker build \
-f transaction-svc/Dockerfile \
-t $REGISTRY/$IMAGE_NAMESPACE/transaction-svc:$VERSION .
docker push $REGISTRY/$IMAGE_NAMESPACE/transaction-svc:$VERSION
# ======================
# notification-svc
# ======================
- name: Build & Push notification-svc
run: |
docker build \
-f notification-svc/Dockerfile \
-t $REGISTRY/$IMAGE_NAMESPACE/notification-svc:$VERSION .
docker push $REGISTRY/$IMAGE_NAMESPACE/notification-svc:$VERSION
deploy:
runs-on: ubuntu-latest
needs: build-and-push
env:
APP_VERSION: ${{ github.ref_name }}
REGISTRY: ghcr.io
IMAGE_NAMESPACE: hervibest
steps:
- name: Setup SSH agent
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.VPS_SSH_KEY }}
- name: Deploy to VPS
run: |
ssh -o StrictHostKeyChecking=no \
${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }} << EOF
set -euo pipefail
cd /home/ubuntu/app/be-yourmoments-backup
grep -q "^APP_VERSION=" .env && \
sed -i "s|^APP_VERSION=.*|APP_VERSION=${APP_VERSION}|" .env || \
echo "APP_VERSION=${APP_VERSION}" >> .env
echo "🔐 Login to GHCR"
echo "${{ secrets.REGISTRY_PASSWORD }}" | \
docker login ${REGISTRY} \
-u hervibest \
--password-stdin
echo "📦 Pull images"
docker compose -f docker-compose-dev.yaml pull
echo "🛑 Stop containers"
docker compose -f docker-compose-dev.yaml down
echo "🚀 Start containers"
docker compose -f docker-compose-dev.yaml up -d
echo "🧹 Cleanup images"
docker image prune -f
echo "✅ Deploy finished"
EOF