Skip to content

Release/ci cd

Release/ci cd #7

Workflow file for this run

name: Build and Push Docker Images
on:
push:
branches:
- main
pull_request:
branches:
- main
- database/hw-2
workflow_dispatch:
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
# Получаем последний коммит в main (для корректного сравнения)
- name: Fetch full history
run: git fetch --prune --unshallow
- name: Restore .env files
run: |
echo "${{ secrets.ENV_FILE }}" > .env
# Проверяем изменения в user_service
- name: Check user_service changes
id: check_user_service
run: |
if git diff --quiet HEAD^ HEAD -- user_service; then
echo "changed=false" >> $GITHUB_OUTPUT
else
echo "changed=true" >> $GITHUB_OUTPUT
fi
# Проверяем изменения в movie_service
- name: Check movie_service changes
id: check_movie_service
run: |
if git diff --quiet HEAD^ HEAD -- movie_service; then
echo "changed=false" >> $GITHUB_OUTPUT
else
echo "changed=true" >> $GITHUB_OUTPUT
fi
# Проверяем изменения в payment_service
- name: Check payment_service changes
id: check_payment_service
run: |
if git diff --quiet HEAD^ HEAD -- payment_service; then
echo "changed=false" >> $GITHUB_OUTPUT
else
echo "changed=true" >> $GITHUB_OUTPUT
fi
# Проверяем изменения в auth_service
- name: Check auth_service changes
id: check_auth_service
run: |
if git diff --quiet HEAD^ HEAD -- auth_service; then
echo "changed=false" >> $GITHUB_OUTPUT
else
echo "changed=true" >> $GITHUB_OUTPUT
fi
# Проверяем изменения в фасаде (корневая часть)
- name: Check facade changes
id: check_facade
run: |
# Проверяем изменения в Dockerfile в корне или любых связанных файлов
# Если вам нужны точные пути - измените команду
if git diff --quiet HEAD^ HEAD -- Dockerfile docker-compose.yml; then
echo "changed=false" >> $GITHUB_OUTPUT
else
echo "changed=true" >> $GITHUB_OUTPUT
fi
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
registry: docker.io
username: unicoyal
password: Igor310304
# Сборка и пуш фасада (только если изменился фасад)
- name: Build and push facade
if: steps.check_facade.outputs.changed == 'true'
uses: docker/build-push-action@v4
with:
context: .
file: ./Dockerfile
push: true
tags: unicoyal/facade:latest
# Сборка и пуш user_service (только если изменился)
- name: Build and push user_service
if: steps.check_user_service.outputs.changed == 'true'
uses: docker/build-push-action@v4
with:
context: ./user_service
file: ./user_service/Dockerfile
push: true
tags: unicoyal/user-service:latest
# Сборка и пуш movie_service
- name: Build and push movie_service
if: steps.check_movie_service.outputs.changed == 'true'
uses: docker/build-push-action@v4
with:
context: ./movie_service
file: ./movie_service/Dockerfile
push: true
tags: unicoyal/movie-service:latest
# Сборка и пуш payment_service
- name: Build and push payment_service
if: steps.check_payment_service.outputs.changed == 'true'
uses: docker/build-push-action@v4
with:
context: ./payment_service
file: ./payment_service/Dockerfile
push: true
tags: unicoyal/payment-service:latest
# Сборка и пуш auth_service
- name: Build and push auth_service
if: steps.check_auth_service.outputs.changed == 'true'
uses: docker/build-push-action@v4
with:
context: ./auth_service
file: ./auth_service/Dockerfile
push: true
tags: unicoyal/auth-service:latest