Практика применения DevOps. Автоматизация процессов разработки, инструментарий и работа с Git

03.12.20

Разработка - DevOps и автоматизация разработки

Автоматизация процессов разработки с применением DevOps-практик помогает получать более качественный и осмысленный результат. На конференции Infostart Event 2019 Inception в ходе мастер-класса «Практика применения DevOps» команда Инфостарта разложила «по полочкам» инструментарий, который используется для каждого из процессов DevOps, и показала, как работать с ними на практике. В первой части выступил Павел Олейников – он сделал обзор инструментов, которые можно использовать при автоматизации процессов разработки, и рассказал про работу с Git (в том числе в EDT).

Меня зовут Павел Олейников, я представляю команду Инфостарта, и в этом мастер-классе я и мои коллеги Светлана Попова, Виталий Подымников и Валерий Пронин расскажем вам о том, как можно применять практики DevOps при разработке в 1С – какие для этого есть инструменты в принципе, что из этого мы используем в своей работе, и как именно мы эти инструменты применяем.

Мастер-класс будет разбит на четыре части:

 

Процессы DevOps

 

 

Эмиль Карапетян в своем докладе рассказал, что такое DevOps и как его использовать в команде разработчиков. А мы более подробно рассмотрим его процессы.

  • Coding – это написание кода, управление версиями, качество кода;

  • Building – сборка;

  • Testing – тестирование приложения;

  • Packaging – сборка релиза;

  • Releasing – управление обновлением рабочей базы;

  • Configuring – управление инфраструктурой;

  • И Monitoring – это контроль того, как все это работает с точки зрения железа и с точки зрения отзывов от пользователей (сбор обратной связи).

 

 

Coding. В процессе написания кода нам могут понадобиться следующие инструменты:

  • конфигуратор 1С и хранилище 1С в качестве системы управления версиями;

  • мы можем вести разработку в EDT и хранить исходники в локальном хранилище Git, используя GitLab при совместной работе с кодом;

  • для проверки качества кода мы можем использовать SonarQube с плагином BSL, а при непосредственной работе в EDT – плагин BSL, который написал Александр Капралов;

  • так как мы разрабатываем в EDT, мы можем редактировать код, используя обычный блокнот или редактор VS Code (это удобно, если вносить небольшие изменения именно в код, а не в формы). Вообще VS Code + Git очень удобно использовать даже в качестве обычной записной книжки, чтобы писать доклад и всегда иметь возможность просмотреть историю изменений – тогда и Dropbox не нужен.

  • OneScript – кроссплатформенная реализация виртуальной машины, которая позволяет писать на языке 1С скрипты по автоматизации различных действий и запускать их из консоли. Создатель OneScript – Андрей Овсянкин.

  • И Jenkins – чтобы все это автоматизировать. Потому что, можно запускать эти процессы вручную, можно написать для этого батники, а можно использовать Jenkins и построить сборочную линию, которая будет все это запускать по очереди.

 

 

Building. Второй процесс – сборка. Здесь тоже используется:

  • Jenkins – чтобы запускать скрипты автоматически;

  • OneScript – чтобы команды в скриптах были на знакомом языке;

  • а 1С и EDT здесь нужны, потому что команды OneScript для сборки конфигураций, которые дальше будут тестироваться, запускают или тот же конфигуратор 1С в пакетном режиме, или утилиту ring от EDT.

 

 

Testing. Для тестирования приложений можно использовать:

  • «Сценарное тестирование» от фирмы «1С» либо связку СППР и Vanessa Automation. Светлана Попова в своем докладе более подробно расскажет, какие плюсы и минусы от этих вариантов мы увидели.

  • Jenkins – чтобы все это запускалось автоматически;

  • OneScript – чтобы скрипты по запуску инструментов тестирования были на знакомом языке;

  • и Allure – для красивого представления отчетов.

 

 

Packaging, Releasing – при автоматизированной сборке релиза и обновлении рабочей базы у нас используется все то же самое, что было на процессе Building – это Jenkins, 1С, EDT, OneScript.

 

 

Процессы Configuring и Monitoring я объединил, потому что у нас в Инфостарте инфраструктурой занимаются внешние подрядчики, и все инструменты, показанные на слайде, пока находятся не у нас – мы отсюда используем только BPM, это наша внутренняя система для учета задач, заявок.

 

Методология DevOps

DevOps – это не только автоматизация работы, это также регламенты, инструкции, способы работы.

Получается, что даже набор правил, регламентов, внутренних инструкций для разработчиков в вашей компании – это тоже DevOps, потому что DevOps не говорит про автоматизацию, он говорит про то, что процессы должны быть.

И мы все этим занимаемся. Мы все пишем код, договариваемся, кто, как его будет писать. Мы можем использовать правила из стандартов разработки фирмы «1С», можем придумывать для своих команд свои правила. Но если мы соблюдаем правила, это значит, мы уже в принципе проводим какой-то анализ кода. То же самое с тестированием – если вы хотя бы запускаете отчет и видите, что он что-то выдает, вы делаете маленькое, но тестирование.

Я к тому, что мы все всегда занимаемся DevOps, он у нас есть. Одни процессы могут быть не сильно развиты, другие отработаны лучше, но в каком-то виде он все равно есть. И то, что мы называем DevOps – это:

  • В первую очередь завязано на регламентацию процессов – чтобы эти процессы были не просто придуманы, а еще и где-то зафиксированы, и все их понимали.

  • И второе – чтобы эти процессы были автоматизированы и запускались сами. Чтобы программист писал код и не думал о том, как обновлять базу. Он пишет код, а всем остальным занимаются другие инженеры.

 

Варианты использования практик DevOps

Давайте посмотрим, какие сборочные линии из этих инструментов можно сделать.

 

Первый вариант – разработка в конфигураторе через хранилище

 

 

Это самый простой вариант для старта, когда:

  • программисты работают так, как они привыкли – они пишут код в конфигураторе 1С и отправляют в хранилище то, что написали;

  • дальше мы автоматизировано выгружаем исходники из хранилища 1С в Git с помощью GitSync – при выгрузке в хранилище у нас каждое помещение в хранилище будет отдельным коммитом, и в принципе можно будет отследить, кто, что туда положил;

  • потом по выгруженным исходникам запускаем проверку качества с помощью SonarQube;

  • после проверки качества проводится тестирование;

  • и в случае, если все хорошо, мы можем из файлов, которые находятся в Git, подготовить cf и дальше релизить его на рабочую базу (либо в базу для демонстрации и уже оттуда обновлять – здесь все зависит от того, у кого какие процессы).

 

Второй вариант – разработка в EDT через Git

 

 

Мы попробовали перевести разработку некоторых наших решений в EDT – это удобная платформа, интересная, со своими нюансами. Если привыкнуть к тому, что она еще сырая (там еще не все работает корректно), то почти идеально. Иногда бывают ошибки, но есть очень много плюсов, которые мне лично понравились.

  • В этом случае разработчики пишут код непосредственно в EDT;

  • EDT сразу связано с Git, сам проект в EDT – это набор файлов, который уже находится в локальном репозитории.

  • Непосредственно в процессе написания кода в EDT мы проверяем его качество с помощью BSL-плагина от Александра Капралова – чтобы сам программист посмотрел, что он там написал.

  • А когда разработчики выгружают свои изменения конфигурации в общую ветку develop, у нас отдельно запускается проверка качества с помощью SonarQube. Эта проверка показывает ситуацию в целом – кто сколько допустил ошибок, насколько дублируется код у разных разработчиков – потому что такое тоже может быть.

  • Дальше – тестирование.

  • И последний этап – подготовка релиза, когда по результатам тестирования мы понимаем, что этот слепок можно отправить в master. Отдельной ветки релиза у нас нет, есть только ветка master, из которой мы при добавлении коммита собираем cf-ник. То есть шаг сборки релиза у нас есть, но мы считаем, что хранить его в Git в виде отдельной ветки не обязательно.

 

 

Как можно использовать сам Git?

  • Можно использовать вариант, когда у нас есть одна ветка master и каждый разработчик создает под себя отдельную ветку, в которой что-то меняет, тестирует, а потом заливает в master.

  • Можно все ветки разработчиков выгружать в ветку develop, где будет проходить тестирование, а ветку master вести отдельно, и выгружать туда только протестированнные изменения – такой вариант используется у нас.

  • А можно обратиться к опыту разработчиков, которые создали методику GitFlow. В ней есть две обязательные ветки:

    • master – это рабочая система;

    • develop (основная ветка, с которой ведется работа);

    • под каждую задачу создаются отдельные ветки, в которых ведется разработка;

    • после того как содержимое ветки develop протестировали, данные отправляются в ветку release, а оттуда уже в master;

    • если вдруг возникает необходимость внести быстрые изменения, появляется ветка maintenance, в которую вносятся изменения, и они сразу же мержатся и в master, и в develop, а из develop во все ветки задач. Это нужно для того, чтобы ветки разработчиков у нас всегда были более продвинутыми (пусть даже не всегда протестированными и рабочими), чем master, и чтобы никакие изменения не потерялись.

 

Практика работы с Git

Давайте перейдем к практике, посмотрим, что такое Git.

Git – это система, которая позволяет контролировать, как изменяются файлы, поэтому использование Git для конфигураций 1С стало возможным после того, как платформа 1С научилась выгружать исходники конфигураций в виде файлов. Это позволило вести версионный контроль изменений кода, не заглядывая в хранилище 1С.

Для установки Git на Windows нужно скачать установщик с сайта https://git-scm.com/downloads. Установка очень простая – все можно оставить по умолчанию.

Чтобы создать хранилище Git, мне привычнее использовать консоль, потому что, как оказалось, во многих приложениях для работы с Git перевод некоторых команд на русский язык сбивает с толку – мне проще писать команды в консоли просто на английском.

 

 

После того, как вы поставите Git на Windows, у вас в контекстном меню появится возможность открыть для этого каталога консоль (Git Bash Here).

 

 

Открываем консоль и создаем репозиторий командой

git init

При этом в открытом каталоге сразу создалась папка .git, в которой будет храниться вся информация об истории и настройках этого репозитория.

 

 

Мы здесь просто создадим текстовый файл и добавим его в индекс командой

git add .

В индексе Git хранит информацию о том, что именно он будет сохранять в дальнейшем.

 

 

Git сохраняет изменения не в любой момент, когда мы что-то изменяем в репозитории – для сохранения нужно «закоммитить» изменения.

Текущий коммит в Git я сохраняю командой

git commit –m "Создание файла"

В этот момент сохраняется слепок состояния файла.

 

 

Если мы сделаем команду:

git log

То у нас появится информация о коммитах – что Павел с email po@infostart.ru 18 сентября 2019 года сделал такой-то коммит.

 

 

Если мы сейчас добавим какой-то текст в файл, который лежит в Git, то, когда я спрошу: «Что случилось с этой папкой» по команде:

git status

Git подсказывает, что файл был изменен.

 

 

Опять добавляем изменения в индекс:

git add .

И делаем еще один коммит.

git commit –m "Строка 1"

 

 

Для перехода между ветками или коммитами есть команда checkout, с помощью которой мы можем создать ветку test:

git checkout –b test

Git нам из текущего состояния создал ветку test и сразу перешел на нее.

 

 

Давайте внесем изменения в файл – добавим еще одну строку.

А теперь посмотрим, как эти изменения отразятся в Git – занесем изменения в индекс и сделаем еще один коммит.

Сейчас наш текстовый документ, который находится в ветке test, содержит две строки. На самом деле Git в своей папке хранит и предыдущий файл, который был в ветке master.

 

 

Чтобы его получить, мы просто переходим в ветку master:

git checkout master

Обратите внимание, у нас в файле осталась только первая строка.

То есть Git для каждого измененного проиндексированного файла в момент коммита сохраняет слепок состояния, а в своей базе хранит состояния на момент коммитов.

 

Работа с Git в EDT

Когда мы разрабатываем в EDT, то у нас конфигурация – это набор файлов, с которыми точно так же можно работать в Git, просто этих файлов будет больше – масштаб будет другой.

Давайте запустим EDT и посмотрим, как в нем можно работать с Git.

 

 

В EDT мы ведем разработку конфигурации «Конференция». Это та самая программа, в которой вас регистрировали при входе на мероприятие.

 

 

Как видите, проект в EDT – это просто набор файлов.

 

 

Мы можем открыть этот каталог в текстовом редакторе и просто внести сюда какие-то изменения прямо в модули.

 

 

Например, находясь в среде VS Code, изменим модуль справочника «Призы» – добавим в него комментарий.

 

 

Вернемся в EDT и видим, что она тоже отследила, что мы изменили модуль справочника «Призы» изменения, и у нас в модуле объекта появился комментарий.

 

 

При переключении между ветками EDT динамически подхватывается состояние проекта. Например, создадим новую ветку командой:

git checkout –b 2009

 

 

И в новой ветке поменяем конфигурацию – удалим с формы списка справочника «Участники» какие-нибудь элементы.

 

 

И даже если мы зафиксируем изменения командой:

git add .

git commit –m "Форма участника"

А потом вернемся на нашу основную ветку:

git checkout ch1609

 

 

И мы видим, что форма вернулась. То есть мы можем ошибиться в одной ветке, но вернуться обратно, как будто ничего не было. А про ту ветку просто забываем, как про страшный сон.

В следующих частях продолжим рассказывать:

 

*************

Данная статья написана по итогам доклада (видео), прочитанного на конференции Infostart Event 2019 Inception.

 

30 мая - 1 июня 2024 года состоится конференция Анализ & Управление в ИТ-проектах, на которой прозвучит 130+ докладов.

Темы конференции:

  • Программная инженерия.
  • Инструментарий аналитика.
  • Решения 1С: архитектура, учет и кейсы автоматизации на 1С.
  • Управление проектом.
  • Управление продуктом.
  • Soft skills, управление командой проекта.

Конференция для аналитиков и руководителей проектов, а также других специалистов из мира 1С, которые занимаются системным и бизнес-анализом, работают с требованиями, управляют проектами и продуктами!

Подробнее о конференции.

 


См. также

Автотесты для типовых конфигураций ERP Управление предприятием 2 и Комплексная автоматизация 2 (для vanessa automation)

Тестирование QA DevOps и автоматизация разработки Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарии возможно использовать как для vanessa-automation, так и для СППР. Поддерживаемые версии конфигураций ERP2 и КА2: 2.5.15.111.

2220 руб.

04.07.2022    6732    26    0    

23

Системы контроля версий для 1С-разработчиков.

1С-программирование DevOps и автоматизация разработки Групповая разработка (Git, хранилище) DevOps для 1С Платформа 1С v8.3 Платные (руб)

Основы командной разработки на 1С. Использование систем контроля версий при разработке на платформе 1С:Предприятие 8

4900 руб.

29.06.2022    9151    78    4    

110

Автотесты для типовых конфигураций Бухгалтерия предприятия КОРП 3.0 и Бухгалтерия предприятия 3.0 (vanessa automation)

Тестирование QA DevOps и автоматизация разработки Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.144.49.

1728 руб.

20.01.2022    6592    10    0    

9

Автоматическое подтверждение легальности обновления базы или как обновить 100 типовых баз 1С за 5 часов

DevOps и автоматизация разработки Обновление 1С Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Расширение для конфигураций 1С для автоматического подтверждения легальности обновления и выполнения обработчиков обновления при пакетном автоматическом обновлении большого числа баз 1С. А также сам модуль обработки по автоматическому обновлению баз.

2 стартмани

08.05.2019    24220    54    VPanin56    26    

26

1С, СППР и Архитектура как код

DevOps и автоматизация разработки Бесплатно (free)

Можно ли идеи подхода «Архитектура как код» положить на 1С или иную платформу, чтобы не изобретать ещё какой-то язык и сразу получить множество готовых библиотек функций и инструмент достижения главной цели подхода AaC.

01.02.2024    2468    roman72    9    

7

TCP прокси-сервер хранилища конфигурации 1С

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    2787    kamisov    17    

57

Infrastructure as code: кнопка «Сделать всё», или Упаковываем наше окружение в 5 кБ текста

DevOps и автоматизация разработки Бесплатно (free)

Когда под каждый проект нужно развернуть отдельный стенд разработки и сборочную линию для его обслуживания, велик риск влияния человеческого фактора. О том, как зафиксировать инженерный опыт в скриптах и унифицировать необходимые настройки для автоматизированного разворачивания инфраструктуры с помощью Terraform и Ansible, пойдет речь в статье.

01.11.2023    1326    Libelle    5    

13

Обработка для подготовки файла настройки дымовых тестов измененных объектов конфигурации

DevOps и автоматизация разработки Тестирование QA Россия Абонемент ($m)

В статье приведен пример обработки, которая на основании измененных файлов git-репозитория готовит специальный файл настройки xUnitParams.json для последующего выполнения дымовых тестов (xUnitFor1C/add) только для измененных объектов конфигурации

1 стартмани

09.10.2023    711    5    ICL-Soft    0    

3
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. infosoft-v 871 03.12.20 19:36 Сейчас в теме
Павел, добрый день.
Обратил внимание, что сообщения Git у вас выдаются в неправильной кодировке, в результате чего вместо русских букв коды Юникода.
Это легко поправимо:

# отключить представление имен файлов в кодировке Unicode
# в виде кодов символов, то есть в виде «\nnn\nnn…»
$ git config --global core.quotepath off
Прикрепленные файлы:
Zeskord; JohnyDeath; +2 Ответить
2. oleynikovpm 07.12.20 11:35 Сейчас в теме
Спасибо, но у всех, кто впервые поставит git именно так будут отображаться файлы, в имени которых используются русские буквы. И когда он в первый раз попробует, то его результат не будет отличаться от того что в докладе. Если интерес с git останется, он исправит эту проблему.
3. Hatson 528 19.05.21 15:27 Сейчас в теме
"Что такое CI/CD и зачем он нужен? 🚀На реальном примере" хорошее видео. В копилку
https://youtu.be/POoQitSQVUI
Оставьте свое сообщение