-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathupdate.sh
57 lines (47 loc) · 1.83 KB
/
update.sh
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
#!/bin/bash
# Сохраняем текущий коммит перед pull
PREV_COMMIT=$(git rev-parse HEAD)
# Обновляем локальный репозиторий
echo "Pulling latest changes from git..."
sudo git pull
# Определяем измененные файлы с последнего коммита перед pull
CHANGED_FILES=$(git diff --name-only $PREV_COMMIT)
# Определяем, какие сервисы нужно перезапустить
SERVICES=()
# Привязка файлов к сервисам
if echo "$CHANGED_FILES" | grep -q "HwProj.APIGateway/"; then
SERVICES+=(hwproj.apigateway.api)
fi
if echo "$CHANGED_FILES" | grep -q "HwProj.AuthService/"; then
SERVICES+=(hwproj.authservice.api)
fi
if echo "$CHANGED_FILES" | grep -q "HwProj.CoursesService/"; then
SERVICES+=(hwproj.coursesservice.api)
fi
if echo "$CHANGED_FILES" | grep -q "HwProj.NotificationsService/"; then
SERVICES+=(hwproj.notificationsservice.api)
fi
if echo "$CHANGED_FILES" | grep -q "HwProj.SolutionsService/"; then
SERVICES+=(hwproj.solutionsservice.api)
fi
if echo "$CHANGED_FILES" | grep -q "HwProj.ContentService/"; then
SERVICES+=(hwproj.contentservice.api)
fi
if echo "$CHANGED_FILES" | grep -q "hwproj.front/"; then
SERVICES+=(front)
fi
# Если нет изменений в сервисах, выходим
if [ ${#SERVICES[@]} -eq 0 ]; then
echo "No relevant changes detected. Exiting."
exit 0
fi
# Останавливаем затронутые сервисы
echo "Stopping services: ${SERVICES[@]}"
sudo docker compose stop ${SERVICES[@]}
# Пересобираем сервисы
echo "Building services: ${SERVICES[@]}"
sudo docker compose build ${SERVICES[@]}
# Запускаем сервисы
echo "Starting services: ${SERVICES[@]}"
sudo docker compose up -d ${SERVICES[@]}
echo "Done."