-
Notifications
You must be signed in to change notification settings - Fork 1
64 lines (55 loc) · 2.06 KB
/
cd.yaml
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
name: Deploy Services and App
on:
push:
paths:
- '**' # Любые изменения в репозитории
workflow_dispatch: # Для ручного запуска Action
jobs:
build-and-deploy:
runs-on: ubuntu-latest
env:
REGISTRY: unicoyal # Или ваш Docker Registry
IMAGE_TAG: latest
DOCKER_USERNAME: unicoyal
DOCKER_PASSWORD: Igor310304
strategy:
matrix:
path:
- ./ # Основное приложение
- movie_service # Микросервис Movie
- user_service # Микросервис User
- payment_service # Микросервис Payment
- auth_service # Микросервис Auth
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Determine changes
id: changes
run: |
if [ $(git rev-list --count HEAD) -eq 0 ]; then
echo "No previous commits, marking all paths as changed."
echo "CHANGED_FILES=${{ matrix.path }}" >> $GITHUB_ENV
else
CHANGED=$(git diff --name-only HEAD^ HEAD)
echo "${CHANGED}" > changed_files.txt
echo "CHANGED_FILES=${CHANGED}" >> $GITHUB_ENV
fi
- name: Check if the service or app changed
run: |
CHANGED_FILES=$(cat changed_files.txt)
echo "Changed files: ${CHANGED_FILES}"
DIR=${{ matrix.path }}
if echo "$CHANGED_FILES" | grep -q "$DIR"; then
echo "$DIR has changes, will be built."
echo "BUILD=true" >> $GITHUB_ENV
else
echo "$DIR has no changes."
echo "BUILD=false" >> $GITHUB_ENV
fi
- name: Log in to DockerHub
run: |
echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin
- name: Build and push Docker image
run: |
docker build -t $REGISTRY/${{ matrix.path }}:$IMAGE_TAG ${{ matrix.path }}
docker push $REGISTRY/${{ matrix.path }}:$IMAGE_TAG