Skip to content

Conversation

@QDenka
Copy link
Owner

@QDenka QDenka commented Feb 8, 2026

Summary

Добавлен полноценный CI/CD пайплайн на GitHub Actions для автоматизации тестирования, проверки качества кода и релизов.


CI Pipeline (.github/workflows/ci.yml)

Запускается на push в main и на pull request в main.

🧪 Tests

PHP Coverage
7.4
8.0
8.1
8.2 ✅ Xdebug + Codecov
8.3
8.4
  • Матрица из 6 версий PHP (от 7.4 до 8.4) для полной совместимости
  • Кеширование Composer-зависимостей для ускорения
  • Coverage-отчёт (clover XML) генерируется на PHP 8.2 и загружается в Codecov

🎨 Code Style

  • PHP CS Fixer с конфигом PSR-12
  • Dry-run: показывает проблемы, не ломает билд (мягкий режим)

🔍 Static Analysis

  • PHPStan level 5 на директорию src/
  • Выявляет ошибки типов, неинициализированные свойства, dead code

🔒 Security Audit

  • composer audit — проверка зависимостей на известные уязвимости

Release Pipeline (.github/workflows/release.yml)

Запускается при push тега v* (например v1.0.0).

  1. Прогоняет тесты
  2. Генерирует changelog из git-коммитов
  3. Создаёт GitHub Release с описанием изменений

Как выпустить релиз:

git tag v1.0.0
git push origin v1.0.0

Конфигурационные файлы

Файл Назначение
.github/workflows/ci.yml CI: тесты, стиль, анализ, безопасность
.github/workflows/release.yml CD: автоматические релизы по тегу
.php-cs-fixer.php Конфиг PHP CS Fixer (PSR-12)
phpunit.xml Конфиг PHPUnit (test suites, source coverage)

Опционально (после мержа)

  • Добавить CODECOV_TOKEN в Settings → Secrets → Actions для покрытия кода
  • Настроить branch protection rule: require CI passing before merge

- Tests on PHP 7.4, 8.0, 8.1, 8.2, 8.3, 8.4
- PHPUnit with coverage report
- PHP CS Fixer for code style
- PHPStan for static analysis
- Security audit via composer audit
- Auto-tag release on version bump in composer.json
- Remove composer.lock dependency — use `composer update` instead of `install`
- PHPUnit version resolved dynamically by Composer per PHP version
- Add --ignore-platform-reqs removal, prefer-lowest for old PHP
- Fix phpunit.xml to be compatible with PHPUnit 8.5+
- Security audit runs only on PHP 8.2 (composer audit requires PHP >=8.0)
- Remove coverage filter from phpunit.xml (incompatible across versions)
- Use --coverage-filter CLI flag for PHPUnit 10+/11.x coverage run
- phpunit.xml is now version-agnostic (works with PHPUnit 8.5 through 11.x)
@QDenka QDenka merged commit 39210f2 into main Feb 8, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant