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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка CI/CD с автотестами для 1С-Битрикс
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1330
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    924
  • 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
    672
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    815
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    714
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1051

Проблема ручного тестирования в Битрикс-проектах

Представьте: вы выкатили обновление на прод, а через час заметили, что в каталоге не отображаются цены. Коммит сломал запрос к инфоблокам, но тест на это был — его просто не запустили. Наши инженеры сталкиваются с таким регулярно. Решение — автоматическое тестирование в CI/CD. Мы внедряем пайплайн, который не пропускает код в main без прохождения всех этапов. Для Битрикс это требует учёта особенностей ядра и БД, но мы нашли работающие подходы.

Получите консультацию инженера — мы проанализируем ваш проект и подготовим индивидуальное предложение.

Почему автоматическое тестирование в CI/CD критично для Битрикс?

CI/CD-пайплайн выполняет тесты автоматически при каждом push. Разработчик не может забыть запустить проверку — код блокируется до зелёного пайплайна. Это экономит до 80% времени на регрессионном тестировании и исключает человеческий фактор. Автоматический пайплайн проходит в 20 раз быстрее, чем ручная проверка кода перед деплоем. Сравнение: PHPStan level 5 находит в 3 раза больше ошибок, чем простой lint. Для Битрикс, где типичные ошибки — неверные вызовы методов API или неправильные запросы к инфоблокам, статический анализ особенно ценен. Подход описан в Continuous Integration.

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

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

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

Docker-образ для CI

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

Характеристика Вариант A: ядро в Docker Вариант B: ядро через артефакт
Надёжность Высокая — образ всегда актуален Средняя — зависит от хранилища
Скорость Быстрый старт Медленнее из-за скачивания
Обновление Требуется пересборка образа Гибкое управление версиями

Вариант A: ядро в Docker-образе.

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.
  • setup_db.php — создаёт минимальную схему БД.
  • artifacts: junit — результаты тестов в интерфейсе 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 (заказы). Создайте дамп схемы с продакшена: mysqldump --no-data bitrix > schema.sql. Храните в репозитории и обновляйте при изменениях. Такой дамп занимает килобайты и легко версионируется.

Интеграционные тесты с реальной БД ловят в 5 раз больше багов, чем юнит-тесты без ядра.

Как подготовить тестовую среду?

Критично использовать отдельную БД для тестов, не затрагивающую разработческую или продакшен-базу. В CI для этого используются сервисные контейнеры MySQL, которые автоматически создаются и уничтожаются после прогона. На локальной машине разработчика можно поднимать такую же БД через Docker Compose — это гарантирует идентичную среду.

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

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

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

Какие результаты даёт автоматизация?

После внедрения CI/CD с автотестами время регресса сокращается на 80%, а количество багов на проде — на 90%. Разработчики экономят до 10 часов в неделю, которые раньше уходили на ручные проверки. Непрерывная интеграция Битрикс-проекта позволяет автоматически проверять код при каждом коммите и выпускать обновления в 2 раза чаще.

Что входит в работу?

При заказе настройки CI/CD для Битрикс мы предоставляем:

  • Подготовленную инфраструктуру (Docker-образ с ядром, конфигурацию CI-провайдера).
  • Набор базовых тестов (lint, static analysis, unit, интеграционные).
  • Документацию по запуску тестов локально и в CI.
  • Обучение команды (1-2 часа воркшопа).
  • Поддержку первых двух месяцев (консультации, правки пайплайна).

Стоимость рассчитывается индивидуально исходя из сложности проекта. Оценим проект за один день — свяжитесь с нами, чтобы обсудить детали. Опыт наших инженеров гарантирует, что CI/CD будет работать стабильно и не потребует постоянной поддержки. Получите консультацию, чтобы получить индивидуальное предложение.