В сообществе 1С часто возникает вопрос: можно ли использовать GitLab не просто как систему контроля версий (Git), а как полноценный инструмент для управления всем циклом разработки, заменяя такие системы, как Jira? Давайте разберемся в этом вопросе, проанализируем опыт коллег и рассмотрим современные подходы к организации DevOps в экосистеме 1С.
Основная дискуссия сводится к тому, что GitLab великолепен для хранения кода и автоматизации, но его встроенные возможности по управлению задачами могут быть недостаточны для крупных проектов. Рассмотрим все аспекты по порядку.
Первое, с чем сталкиваются команды — это функционал ведения задач (Issues) в GitLab. Участники обсуждения сходятся во мнении, что в бесплатной версии (CE) он довольно урезан по сравнению со специализированными системами.
Ключевые моменты, на которые стоит обратить внимание:
GitLab + Jira: Классическая связка, где GitLab отвечает за код и CI/CD, а Jira — за управление проектом, задачами и методологиями (Scrum, Kanban).GitLab + Redmine + Jenkins: Еще один рабочий вариант. Redmine выступает в роли системы управления задачами, Jenkins — как сервер для автоматизации сборок и развертывания, а GitLab — как центральный репозиторий кода.Таким образом, для полноценного управления разработкой одного GitLab часто бывает недостаточно. Его сила раскрывается в другой области — в работе с кодом и его автоматической обработке.
Самое большое заблуждение — это хранить в Git бинарные файлы конфигурации (.cf, .epf, .erf). Git не может анализировать их содержимое, и каждое изменение будет выглядеть как полная замена файла. Это лишает систему контроля версий ее главного преимущества — возможности видеть, что именно изменилось.
Правильный подход — хранить исходный код в текстовом формате. Рассмотрим, как это реализовать:
Gitsync или скрипты на OneScript. Эти скрипты перед каждым коммитом (отправкой в GitLab) разбирают бинарный файл на исходники. Это позволяет отслеживать изменения в каждом конкретном модуле, форме или объекте метаданных.Главное преимущество: Когда код хранится в текстовом формате, вы получаете возможность проводить Code Review и видеть разницу (diff) между версиями прямо в веб-интерфейсе GitLab.
Это одна из самых сильных сторон GitLab, которая кардинально меняет культуру разработки в 1С. Вместо того чтобы разработчики напрямую вносили изменения в общее хранилище конфигурации, внедряется процесс Merge Requests (MR) или Pull Requests (PR).
Процесс выглядит следующим образом:
develop). Для каждой задачи он создает отдельную ветку (например, feature/TASK-123-new-report).Такой подход значительно повышает качество кода, обеспечивает обмен знаниями в команде и снижает количество ошибок, попадающих в рабочую систему.
Хотя в обсуждении упоминался Jenkins, современный GitLab имеет мощный встроенный инструмент для автоматизации — GitLab CI/CD. Он позволяет отказаться от поддержки отдельного сервера Jenkins и описывать все шаги автоматизации в одном файле .gitlab-ci.yml, который хранится вместе с кодом.
С помощью GitLab Runner (агентов, которые выполняют задания) и OneScript можно автоматизировать практически весь цикл поставки ПО 1С:
Рассмотрим примерный сценарий (пайплайн), который запускается при создании Merge Request или слиянии в основную ветку:
BSL Language Server. Это помогает поддерживать единый стиль кода во всей команде..cf, .cfu) из исходного кода.Более того, результаты тестирования можно визуализировать. Например, при использовании Vanessa-Automation можно настроить выгрузку отчетов в формате Allure и их публикацию на GitLab Pages. Это дает красивые и интерактивные отчеты о прохождении тестов прямо в интерфейсе GitLab.
Для тех, кто ищет "комплексный обед от одного повара", как выразился один из участников форума, существует альтернатива. Главным конкурентом GitLab в этой нише является Azure DevOps (ранее известный как TFS).
Azure DevOps исторически предоставляет более тесно интегрированный набор инструментов:
Однако стоит отметить, что GitLab активно развивает свои инструменты управления проектами. В платных версиях появляются продвинутые доски задач, эпики и другие функции, которые приближают его к Jira и Azure DevOps, делая связку "только GitLab" все более реальной даже для средних команд.
Использовать GitLab при разработке в 1С не просто можно, а нужно. Он является ядром современного DevOps-процесса. Однако не стоит ожидать, что он в одиночку закроет все потребности.
Краткие выводы:
Внедрение GitLab и связанных с ним практик, таких как Merge Requests и CI/CD, — это не просто смена инструмента, а качественный скачок в культуре разработки, который приводит к повышению надежности и скорости выпуска продукта.