Skip to content

Workflow file for this run

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