Настройка автоматического тестирования в CI/CD для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка автоматического тестирования в CI/CD для 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка автоматического тестирования в CI/CD для 1С-Битрикс

Тесты написаны, но разработчики запускают их вручную — и забывают. Код уходит в продакшн без проверки, тесты устаревают, покрытие деградирует. Автоматическое тестирование в CI/CD решает организационную проблему: код не может попасть в основную ветку без прохождения тестов. Для Битрикс это реализуется сложнее, чем для Symfony или Laravel, из-за зависимости от ядра и БД, но вполне решаемо.

Архитектура пайплайна

Минимальный CI-пайплайн для Битрикс-проекта:

  1. Checkout — получение кода из репозитория
  2. Composer install — установка зависимостей (PHPUnit, phpstan, php-cs-fixer)
  3. Lintphp -l для всех PHP-файлов, проверка синтаксиса
  4. Static analysis — PHPStan / Psalm
  5. Unit tests — быстрые тесты без ядра Битрикс
  6. Integration tests — тесты с подключением ядра и БД
  7. Deploy (только для main-ветки)

Docker-образ для CI

Главная сложность — ядро Битрикс. Оно не устанавливается через Composer. Варианты:

Вариант A: ядро в Docker-образе. Создайте базовый образ с установленным Битрикс, PHP и расширениями. Обновляйте образ при обновлении ядра на проекте. Это самый надёжный подход.

FROM php:8.1-cli
RUN apt-get update && apt-get install -y libpq-dev libzip-dev \
    && docker-php-ext-install pdo pdo_mysql opcache zip
COPY bitrix/ /var/www/bitrix/
COPY composer.json composer.lock /var/www/
WORKDIR /var/www
RUN composer install --no-dev

Вариант B: ядро через артефакт. CI скачивает ядро из приватного хранилища (S3, GitLab Package Registry) на этапе подготовки. Более гибко, но медленнее.

Настройка GitLab CI

stages:
  - lint
  - test
  - deploy

variables:
  MYSQL_DATABASE: bitrix_test
  MYSQL_ROOT_PASSWORD: test

lint:
  stage: lint
  image: php:8.1-cli
  script:
    - find local/ -name "*.php" -exec php -l {} \;
    - vendor/bin/phpstan analyse local/php_interface/classes/ --level 5

integration-tests:
  stage: test
  image: registry.example.com/bitrix-ci:latest
  services:
    - mysql:8.0
  script:
    - cp .env.ci .env
    - php local/tests/setup_db.php
    - vendor/bin/phpunit --configuration local/tests/phpunit.xml
  artifacts:
    when: always
    reports:
      junit: local/tests/report.xml

Ключевые моменты:

  • services: mysql — поднимает контейнер MySQL, доступный по хосту mysql внутри CI
  • setup_db.php — скрипт, создающий схему тестовой БД (минимальный набор таблиц Битрикс)
  • artifacts: junit — GitLab/GitHub отображает результаты тестов в интерфейсе merge request

Для GitHub Actions

name: Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    services:
      mysql:
        image: mysql:8.0
        env:
          MYSQL_DATABASE: bitrix_test
          MYSQL_ROOT_PASSWORD: test
        ports:
          - 3306:3306
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with:
          php-version: '8.1'
          extensions: pdo_mysql, mbstring, zip, gd
      - run: composer install
      - run: vendor/bin/phpunit --configuration local/tests/phpunit.xml

Схема тестовой БД

Полная БД Битрикс содержит 500+ таблиц. Для интеграционных тестов нужен минимальный набор:

  • b_option, b_module, b_module_to_module — конфигурация модулей
  • b_iblock, b_iblock_type, b_iblock_element, b_iblock_section, b_iblock_property, b_iblock_element_property — инфоблоки
  • b_catalog_price, b_catalog_currency — каталог и валюты
  • b_sale_order, b_sale_basket, b_sale_order_props_value — заказы (если тестируете e-commerce)

Создайте дамп схемы с продакшена: mysqldump --no-data bitrix > schema.sql. Добавьте в репозиторий и обновляйте при изменении структуры.

Что проверять в CI обязательно

PHP Lint. Тривиально, но ловит синтаксические ошибки в файлах, которые не вызываются при ручном тестировании. Битрикс-проекты часто содержат файлы, подключаемые условно (по агенту, по cron) — ошибку в них обнаруживают уже на продакшене.

PHPStan level 5+. На уровне 5 PHPStan находит обращения к несуществующим методам, некорректные типы аргументов, неопределённые переменные. Для Битрикс-кода потребуется файл phpstan-baseline.neon с игнорированием ошибок ядра — ядро не типизировано и генерирует сотни предупреждений.

Smoke-тесты HTTP. Если CI поднимает полное окружение (PHP-FPM + Nginx + MySQL), добавьте curl-проверки критичных URL:

curl -f http://localhost/
curl -f http://localhost/catalog/
curl -f http://localhost/personal/cart/

Статус 200 — тест пройден. Любой другой — fail пайплайна.

Время выполнения

Этап Время
Lint + static analysis 30-60 секунд
Unit-тесты (без ядра) 10-30 секунд
Integration-тесты (с ядром и БД) 2-10 минут
Полный пайплайн 5-15 минут

Если интеграционные тесты занимают больше 15 минут — разделяйте их на параллельные job'ы по модулям. GitLab CI и GitHub Actions поддерживают параллельные matrix-стратегии.

Настройка CI/CD для Битрикс-проекта — это инвестиция в один рабочий день, которая окупается при первом же предотвращённом баге на продакшене.