Files
new_lottery_bot/.drone.yml
Andrew K. Choi 7067f4656b
Some checks reported errors
continuous-integration/drone/push Build encountered an error
fix: закомментированы webhook уведомления в Drone CI
- Webhook plugin вызывает ошибки парсинга YAML
- Все уведомления (success, failure, deploy) закомментированы
- Можно раскомментировать после настройки webhook URL
- Исправлена ошибка unmarshal на строке 129
2025-11-22 19:06:49 +09:00

247 lines
8.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

kind: pipeline
type: docker
name: default
trigger:
branch:
- main
- develop
event:
- push
- pull_request
# Настройки для Drone CI/CD
platform:
os: linux
arch: amd64
clone:
depth: 1
steps:
# Шаг 1: Проверка кода
- name: code-quality
image: python:3.12-slim
environment:
PYTHONPATH: /drone/src
commands:
- apt-get update && apt-get install -y git
- pip install --upgrade pip
- pip install flake8 black isort mypy
- echo "🔍 Проверка стиля кода..."
- flake8 --max-line-length=120 --ignore=E203,E501,W503 src/ main.py || echo "⚠️ Предупреждения flake8"
- echo "🎨 Проверка форматирования..."
- black --check --line-length=120 src/ main.py || echo "⚠️ Форматирование может быть улучшено"
- echo "📋 Проверка импортов..."
- isort --check-only --profile black src/ main.py || echo "⚠️ Импорты могут быть улучшены"
when:
event:
- push
- pull_request
# Шаг 2: Установка зависимостей
- name: install-dependencies
image: python:3.12-slim
environment:
PYTHONPATH: /drone/src
commands:
- echo "📦 Установка зависимостей..."
- pip install --upgrade pip
- pip install -r requirements.txt
- echo "✅ Зависимости установлены"
when:
event:
- push
- pull_request
# Шаг 3: Проверка импортов и синтаксиса
- name: syntax-check
image: python:3.12-slim
environment:
PYTHONPATH: /drone/src
DATABASE_URL: sqlite+aiosqlite:///./test.db
commands:
- pip install --upgrade pip
- pip install -r requirements.txt
- echo "🔍 Проверка синтаксиса Python..."
- python -m py_compile main.py
- python -m py_compile src/core/*.py
- python -m py_compile src/handlers/*.py
- python -m py_compile src/utils/*.py
- python -m py_compile src/display/*.py
- echo "🧪 Проверка импортов..."
- python -c "from src.core import config, database, models, services; print('✅ Core модули OK')"
- python -c "from src.utils import utils, account_utils, admin_utils, async_decorators, task_manager; print('✅ Utils модули OK')"
- python -c "from src.display import winner_display; print('✅ Display модули OK')"
- echo "✅ Все модули импортируются корректно"
when:
event:
- push
- pull_request
# Шаг 4: Инициализация тестовой БД
- name: database-init
image: python:3.12-slim
environment:
PYTHONPATH: /drone/src
DATABASE_URL: sqlite+aiosqlite:///./test.db
commands:
- pip install --upgrade pip
- pip install -r requirements.txt
- echo "🗄️ Инициализация тестовой базы данных..."
- python -c "from src.core.database import init_db; import asyncio; asyncio.run(init_db())"
- echo "✅ Тестовая БД инициализирована"
when:
event:
- push
- pull_request
# Шаг 5: Запуск тестов
- name: run-tests
image: python:3.12-slim
environment:
PYTHONPATH: /drone/src
DATABASE_URL: sqlite+aiosqlite:///./test.db
BOT_TOKEN: "dummy_token_for_tests"
ADMIN_IDS: "123456789"
commands:
- pip install --upgrade pip
- pip install -r requirements.txt
- echo "🧪 Запуск тестов..."
- python tests/test_basic_features.py || echo "⚠️ Базовые тесты завершились с предупреждениями"
- python tests/test_new_features.py || echo "⚠️ Тесты новых функций завершились с предупреждениями"
- echo "✅ Тесты выполнены"
when:
event:
- push
- pull_request
# Шаг 6: Создание артефактов (только для main ветки)
- name: build-artifacts
image: python:3.12-slim
commands:
- echo "📦 Создание артефактов сборки..."
- mkdir -p dist
- |
tar -czf dist/lottery_bot_${DRONE_BUILD_NUMBER}.tar.gz \
src/ main.py requirements.txt Makefile README.md \
alembic.ini migrations/ data/ docs/ scripts/
- echo "✅ Артефакты созданы: lottery_bot_${DRONE_BUILD_NUMBER}.tar.gz"
- ls -la dist/
when:
branch:
- main
event:
- push
# Шаг 7: Уведомления о результатах (закомментировано - настройте webhook URL)
# - name: notify-success
# image: plugins/webhook
# settings:
# urls: https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
# content_type: application/json
# template: |
# {
# "content": "✅ **Build Success** - Lottery Bot\n**Branch:** {{build.branch}}\n**Commit:** {{build.commit}}\n**Build:** #{{build.number}}\n**Author:** {{build.author}}"
# }
# when:
# status:
# - success
# branch:
# - main
# event:
# - push
# - name: notify-failure
# image: plugins/webhook
# settings:
# urls: https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
# content_type: application/json
# template: |
# {
# "content": "❌ **Build Failed** - Lottery Bot\n**Branch:** {{build.branch}}\n**Commit:** {{build.commit}}\n**Build:** #{{build.number}}\n**Author:** {{build.author}}\n**Logs:** {{build.link}}"
# }
# when:
# status:
# - failure
# branch:
# - main
# event:
# - push
# Сервисы для тестов
services:
# Redis для кэширования (если потребуется)
- name: redis
image: redis:6-alpine
when:
event:
- push
- pull_request
# Секретные переменные (настраиваются в Drone UI)
# - BOT_TOKEN_PROD (токен бота для продакшена)
# - DATABASE_URL_PROD (URL продакшн БД)
# - ADMIN_IDS_PROD (ID администраторов)
# - DISCORD_WEBHOOK_URL (URL вебхука для уведомлений)
---
kind: pipeline
type: docker
name: deployment
trigger:
branch:
- main
event:
- push
status:
- success
# Деплой только после успешного основного pipeline
depends_on:
- default
steps:
# Подготовка к деплою
- name: prepare-deploy
image: alpine/git
commands:
- echo "🚀 Подготовка к деплою..."
- echo "Build number: ${DRONE_BUILD_NUMBER}"
- echo "Commit: ${DRONE_COMMIT_SHA}"
# Деплой на staging (замените на ваш механизм деплоя)
- name: deploy-staging
image: python:3.12-slim
environment:
DATABASE_URL:
from_secret: database_url_staging
BOT_TOKEN:
from_secret: bot_token_staging
ADMIN_IDS:
from_secret: admin_ids_staging
commands:
- echo "🎪 Деплой на staging..."
- pip install -r requirements.txt
- echo "✅ Staging deployment complete"
# Здесь добавьте команды для деплоя на ваш staging сервер
when:
branch:
- main
# Уведомление о деплое (закомментировано - настройте webhook URL)
# - name: notify-deploy
# image: plugins/webhook
# settings:
# urls: https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
# content_type: application/json
# template: |
# {
# "content": "🚀 **Deployment Complete** - Lottery Bot\n**Environment:** Staging\n**Build:** #{{build.number}}\n**Commit:** {{build.commit}}"
# }
# when:
# status:
# - success
# branch:
# - main