build: игнорировать copilotDiffState.xml (локальное состояние GitHub Copilot IDE)

- Удален copilotDiffState.xml из git истории
- Добавлено правило в .gitignore для игнорирования этого файла
- Это локальный служебный файл PyCharm, специфичный для машины разработчика
- Не должен попадать в репозиторий и загрязнять git history
This commit is contained in:
2026-04-01 00:04:12 +03:00
parent bbf35c0c24
commit 1b0fa5e500
4 changed files with 61 additions and 27 deletions

View File

@@ -0,0 +1,58 @@
name: Build and Push PetClones-site
on:
push:
# Запускать только при создании тега, начинающегося с 'v' (например, v1.0.0)
tags:
- 'v*'
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
# Генерируем метаданные (теги) для Docker
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
# Важно: используем gitea.repository
images: git.cube2.ru/${{ gitea.repository }}
tags: |
type=ref,event=tag
type=raw,value=latest,enable=${{ gitea.ref_type == 'tag' }}
# Логин в реестр Gitea
- name: Login to Gitea Registry
uses: docker/login-action@v2
with:
registry: git.cube2.ru
# Важно: используем gitea.actor
username: ${{ gitea.actor }}
password: ${{ secrets.REGISTRY_PASSWORD }}
# Сборка и отправка образа
- name: Build and push image PetClones-site
uses: docker/build-push-action@v4
with:
context: .
file: Dockerfile
# platforms: linux/amd64
platforms: linux/amd64,linux/arm64
push: true
# Используем теги, сгенерированные шагом meta (v0.1.0 и latest)
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
# Кэширование для ускорения повторных сборок
cache-from: type=gha
cache-to: type=gha,mode=max
# Увеличиваем тайм-аут на случай медленного интернета
timeout: 1800 # 30 минут

3
.gitignore vendored
View File

@@ -24,6 +24,9 @@
.idea/**/uiDesigner.xml .idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml .idea/**/dbnavigator.xml
# IDE - GitHub Copilot state (local IDE state, not needed in repo)
.idea/copilotDiffState.xml
# Gradle # Gradle
.idea/**/gradle.xml .idea/**/gradle.xml
.idea/**/libraries .idea/**/libraries

View File

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CopilotDiffPersistence">
<option name="pendingDiffs">
<map>
<entry key="$PROJECT_DIR$/docker-compose.prod.yml">
<value>
<PendingDiffInfo>
<option name="filePath" value="$PROJECT_DIR$/docker-compose.prod.yml" />
<option name="originalContent" value="# docker-compose.prod.yml для production развертывания проекта rosmorport_tsts&#10;# Использование: docker-compose -f docker-compose.prod.yml up -d&#10;&#10;version: '3.9'&#10;&#10;services:&#10; # Django приложение в production&#10; web:&#10; # Строим образ из Dockerfile в текущей директории&#10; build:&#10; context: .&#10; dockerfile: Dockerfile&#10; &#10; # Имя контейнера&#10; container_name: rosmorport_web_prod&#10; &#10; # Переменные окружения для production&#10; environment:&#10; - DOCKER_ENV=1&#10; - DEBUG=False&#10; - ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0,web,pet-clones.cocorico.ru&#10; - DB_ENGINE=django.db.backends.postgresql&#10; - DB_HOST=db&#10; - DB_PORT=5432&#10; - DB_NAME=${POSTGRES_DB:-rosmorport_db}&#10; - DB_USER=${POSTGRES_USER:-postgres}&#10; - DB_PASSWORD=${POSTGRES_PASSWORD:-postgres}&#10; - PYTHONUNBUFFERED=1&#10; &#10; # Тома для медиа, статики и БД&#10; volumes:&#10; - public_media:/app/public/media&#10; - public_static:/app/public/static&#10; - database:/app/database&#10; - ./logs:/app/logs&#10; &#10; # Перенаправляем порты&#10; ports:&#10; - &quot;8000:8000&quot;&#10; &#10; # Зависимость от базы данных&#10; depends_on:&#10; db:&#10; condition: service_healthy&#10; &#10; # Политика перезапуска&#10; restart: unless-stopped&#10; &#10; # Ограничения ресурсов&#10; deploy:&#10; resources:&#10; limits:&#10; cpus: '1'&#10; memory: 512M&#10; reservations:&#10; cpus: '0.5'&#10; memory: 256M&#10; &#10; # PostgreSQL база данных для production&#10; db:&#10; # Используем официальный образ PostgreSQL&#10; image: postgres:16-alpine&#10; container_name: rosmorport_db_prod&#10; &#10; # Переменные окружения&#10; environment:&#10; - POSTGRES_DB=${POSTGRES_DB:-rosmorport_db}&#10; - POSTGRES_USER=${POSTGRES_USER:-postgres}&#10; - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres}&#10; &#10; # Том для хранения данных БД&#10; volumes:&#10; - postgres_data:/var/lib/postgresql/data&#10; &#10; # Портов не открываем - доступ только изнутри контейнеров&#10; # ports:&#10; # - &quot;5432:5432&quot;&#10; &#10; # Проверка здоровья сервиса&#10; healthcheck:&#10; test: [&quot;CMD-SHELL&quot;, &quot;pg_isready -U ${POSTGRES_USER:-postgres}&quot;]&#10; interval: 10s&#10; timeout: 5s&#10; retries: 5&#10; &#10; # Политика перезапуска&#10; restart: unless-stopped&#10; &#10; # Ограничения ресурсов&#10; deploy:&#10; resources:&#10; limits:&#10; cpus: '1'&#10; memory: 1G&#10; reservations:&#10; cpus: '0.5'&#10; memory: 512M&#10; &#10; # Nginx для reverse proxy (опционально)&#10; # nginx:&#10; # image: nginx:alpine&#10; # container_name: rosmorport_nginx&#10; # volumes:&#10; # - ./config/nginx.conf:/etc/nginx/nginx.conf:ro&#10; # - django_staticfiles:/app/static:ro&#10; # - django_mediafiles:/app/media:ro&#10; # ports:&#10; # - &quot;80:80&quot;&#10; # - &quot;443:443&quot;&#10; # depends_on:&#10; # - web&#10; # restart: unless-stopped&#10;&#10;# Именованные тома для хранения данных&#10;volumes:&#10; postgres_data:&#10; driver: local&#10; public_media:&#10; driver: local&#10; public_static:&#10; driver: local&#10; database:&#10; driver: local&#10;&#10;# Сеть для сервисов&#10;networks:&#10; default:&#10; name: rosmorport_network&#10; driver: bridge&#10;&#10;" />
<option name="updatedContent" value="# docker-compose.prod.yml для production развертывания проекта rosmorport_tsts&#10;# Использование: docker-compose -f docker-compose.prod.yml up -d&#10;&#10;version: '3.9'&#10;&#10;services:&#10; # Django приложение в production&#10; web:&#10; # Строим образ из Dockerfile в текущей директории&#10; build:&#10; context: .&#10; dockerfile: Dockerfile&#10; &#10; # Имя контейнера&#10; container_name: rosmorport_web_prod&#10; &#10; # Переменные окружения для production&#10; environment:&#10; - DOCKER_ENV=1&#10; - DEBUG=False&#10; - ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0,web,pet-clones.cocorico.ru&#10; - DB_ENGINE=django.db.backends.postgresql&#10; - DB_HOST=db&#10; - DB_PORT=5432&#10; - DB_NAME=${POSTGRES_DB:-rosmorport_db}&#10; - DB_USER=${POSTGRES_USER:-postgres}&#10; - DB_PASSWORD=${POSTGRES_PASSWORD:-postgres}&#10; - PYTHONUNBUFFERED=1&#10; &#10; # Тома для медиа, статики и БД&#10; volumes:&#10; - public_media:/app/public/media&#10; - public_static:/app/public/static&#10; - database:/app/database&#10; &#10; # Перенаправляем порты&#10; ports:&#10; - &quot;8000:8000&quot;&#10; &#10; # Зависимость от базы данных&#10; depends_on:&#10; db:&#10; condition: service_healthy&#10; &#10; # Политика перезапуска&#10; restart: unless-stopped&#10; &#10; # Ограничения ресурсов&#10; deploy:&#10; resources:&#10; limits:&#10; cpus: '1'&#10; memory: 512M&#10; reservations:&#10; cpus: '0.5'&#10; memory: 256M&#10; &#10; # PostgreSQL база данных для production&#10; db:&#10; # Используем официальный образ PostgreSQL&#10; image: postgres:16-alpine&#10; container_name: rosmorport_db_prod&#10; &#10; # Переменные окружения&#10; environment:&#10; - POSTGRES_DB=${POSTGRES_DB:-rosmorport_db}&#10; - POSTGRES_USER=${POSTGRES_USER:-postgres}&#10; - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-postgres}&#10; &#10; # Том для хранения данных БД&#10; volumes:&#10; - postgres_data:/var/lib/postgresql/data&#10; &#10; # Портов не открываем - доступ только изнутри контейнеров&#10; # ports:&#10; # - &quot;5432:5432&quot;&#10; &#10; # Проверка здоровья сервиса&#10; healthcheck:&#10; test: [&quot;CMD-SHELL&quot;, &quot;pg_isready -U ${POSTGRES_USER:-postgres}&quot;]&#10; interval: 10s&#10; timeout: 5s&#10; retries: 5&#10; &#10; # Политика перезапуска&#10; restart: unless-stopped&#10; &#10; # Ограничения ресурсов&#10; deploy:&#10; resources:&#10; limits:&#10; cpus: '1'&#10; memory: 1G&#10; reservations:&#10; cpus: '0.5'&#10; memory: 512M&#10; &#10; # Nginx для reverse proxy (опционально)&#10; # nginx:&#10; # image: nginx:alpine&#10; # container_name: rosmorport_nginx&#10; # volumes:&#10; # - ./config/nginx.conf:/etc/nginx/nginx.conf:ro&#10; # - django_staticfiles:/app/static:ro&#10; # - django_mediafiles:/app/media:ro&#10; # ports:&#10; # - &quot;80:80&quot;&#10; # - &quot;443:443&quot;&#10; # depends_on:&#10; # - web&#10; # restart: unless-stopped&#10;&#10;# Именованные тома для хранения данных&#10;volumes:&#10; postgres_data:&#10; driver: local&#10; public_media:&#10; driver: local&#10; public_static:&#10; driver: local&#10; database:&#10; driver: local&#10;&#10;# Сеть для сервисов&#10;networks:&#10; default:&#10; name: rosmorport_network&#10; driver: bridge&#10;&#10;" />
</PendingDiffInfo>
</value>
</entry>
<entry key="$PROJECT_DIR$/docker-compose.yml">
<value>
<PendingDiffInfo>
<option name="filePath" value="$PROJECT_DIR$/docker-compose.yml" />
<option name="originalContent" value="# docker-compose.yml для локальной разработки проекта rosmorport_tsts&#10;version: '3.9'&#10;&#10;services:&#10; # Django приложение&#10; web:&#10; # Строим образ из Dockerfile в текущей директории&#10; build:&#10; context: .&#10; dockerfile: Dockerfile&#10; &#10; # Имя контейнера&#10; container_name: rosmorport_web&#10; &#10; # Переменные окружения для разработки&#10; environment:&#10; - DOCKER_ENV=1&#10; - DEBUG=True&#10; - ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0,web&#10; - DB_ENGINE=django.db.backends.sqlite3&#10; - DB_NAME=/app/db.sqlite3&#10; - PYTHONUNBUFFERED=1&#10; &#10; # Монтируем текущую директорию для разработки&#10; volumes:&#10; - .:/app&#10; - ./public/static:/app/public/static&#10; - ./public/media:/app/public/media&#10; - ./database:/app/database&#10; - ./logs:/app/logs&#10; &#10; # Перенаправляем порты&#10; ports:&#10; - &quot;8000:8000&quot;&#10; &#10; # Команда для запуска в режиме разработки&#10; command: &gt;&#10; sh -c &quot;python rosmorport_tsts/manage.py migrate &amp;&amp;&#10; python rosmorport_tsts/manage.py collectstatic --noinput &amp;&amp;&#10; python rosmorport_tsts/manage.py runserver 0.0.0.0:8000&quot;&#10; &#10; # Зависимости (если будут другие сервисы)&#10; # depends_on:&#10; # - db&#10; &#10; # Сохраняем контейнер в запущенном состоянии при ошибках&#10; stdin_open: true&#10; tty: true&#10; &#10; # Опционально: PostgreSQL база данных для продакшена&#10; # db:&#10; # image: postgres:16-alpine&#10; # container_name: rosmorport_db&#10; # environment:&#10; # - POSTGRES_DB=rosmorport_db&#10; # - POSTGRES_USER=postgres&#10; # - POSTGRES_PASSWORD=postgres&#10; # volumes:&#10; # - postgres_data:/var/lib/postgresql/data&#10; # ports:&#10; # - &quot;5432:5432&quot;&#10; # healthcheck:&#10; # test: [&quot;CMD-SHELL&quot;, &quot;pg_isready -U postgres&quot;]&#10; # interval: 10s&#10; # timeout: 5s&#10; # retries: 5&#10;&#10;# Именованные тома для хранения данных&#10;volumes:&#10; django_staticfiles:&#10; driver: local&#10; django_mediafiles:&#10; driver: local&#10; # postgres_data:&#10; # driver: local&#10;&#10;# Опционально: сеть для сервисов&#10;networks:&#10; default:&#10; name: rosmorport_network&#10; driver: bridge&#10;&#10;" />
<option name="updatedContent" value="# docker-compose.yml для локальной разработки проекта rosmorport_tsts&#10;version: '3.9'&#10;&#10;services:&#10; # Django приложение&#10; web:&#10; # Строим образ из Dockerfile в текущей директории&#10; build:&#10; context: .&#10; dockerfile: Dockerfile&#10; &#10; # Имя контейнера&#10; container_name: rosmorport_web&#10; &#10; # Переменные окружения для разработки&#10; environment:&#10; - DOCKER_ENV=1&#10; - DEBUG=True&#10; - ALLOWED_HOSTS=localhost,127.0.0.1,0.0.0.0,web&#10; - DB_ENGINE=django.db.backends.sqlite3&#10; - DB_NAME=/app/db.sqlite3&#10; - PYTHONUNBUFFERED=1&#10; &#10; # Монтируем текущую директорию для разработки&#10; volumes:&#10; - .:/app&#10; - ./public/static:/app/public/static&#10; - ./public/media:/app/public/media&#10; - ./database:/app/database&#10; &#10; # Перенаправляем порты&#10; ports:&#10; - &quot;8000:8000&quot;&#10; &#10; # Команда для запуска в режиме разработки&#10; command: &gt;&#10; sh -c &quot;python rosmorport_tsts/manage.py migrate &amp;&amp;&#10; python rosmorport_tsts/manage.py collectstatic --noinput &amp;&amp;&#10; python rosmorport_tsts/manage.py runserver 0.0.0.0:8000&quot;&#10; &#10; # Зависимости (если будут другие сервисы)&#10; # depends_on:&#10; # - db&#10; &#10; # Сохраняем контейнер в запущенном состоянии при ошибках&#10; stdin_open: true&#10; tty: true&#10; &#10; # Опционально: PostgreSQL база данных для продакшена&#10; # db:&#10; # image: postgres:16-alpine&#10; # container_name: rosmorport_db&#10; # environment:&#10; # - POSTGRES_DB=rosmorport_db&#10; # - POSTGRES_USER=postgres&#10; # - POSTGRES_PASSWORD=postgres&#10; # volumes:&#10; # - postgres_data:/var/lib/postgresql/data&#10; # ports:&#10; # - &quot;5432:5432&quot;&#10; # healthcheck:&#10; # test: [&quot;CMD-SHELL&quot;, &quot;pg_isready -U postgres&quot;]&#10; # interval: 10s&#10; # timeout: 5s&#10; # retries: 5&#10;&#10;# Именованные тома для хранения данных&#10;volumes:&#10; django_staticfiles:&#10; driver: local&#10; django_mediafiles:&#10; driver: local&#10; # postgres_data:&#10; # driver: local&#10;&#10;# Опционально: сеть для сервисов&#10;networks:&#10; default:&#10; name: rosmorport_network&#10; driver: bridge&#10;&#10;" />
</PendingDiffInfo>
</value>
</entry>
</map>
</option>
</component>
</project>