Практика применения 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.

См. также

DevOps для 1С DevOps и автоматизация разработки Программист Стажер Платные (руб)

Данный онлайн-курс (интенсив) предусматривает изучение процессов, инструментов и методик DevOps, их применение при разработке на платформе 1С. 

2500 руб.

20.06.2023    22273    2    4    

310

SALE! 50%

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

Использования систем контроля версий — стандарт современной разработки. На курсе научимся использованию Хранилища 1С и GIT при разработке на 1С:Предприятие 8. Разберем подходы и приемы коллективной разработки, научимся самостоятельно настраивать системы и ориентироваться в них.

4900 2450 руб.

29.06.2022    11934    99    4    

131

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

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

2160 руб.

05.08.2024    1280    12    1    

7

DevOps и автоматизация разработки Логистика, склад и ТМЦ Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Подсистема «Управление сборкой GLI» предназначена для динамического формирования сборочных линий Gitlab и отслеживания процесса доработок систем на базе1С:Предприятия Позволяет упростить выпуск новых релизов системы, подготовить описание доработок системы. Интегрируется с GitLab API по событиям Push, Merge-request, Pipeline. Уведомляет пользователей о результатах сборки/тестирования сборочных конвейеров через СВ, либо при её недоступности или отсутствию по E-Mail. Поможет при отправке исправлений ошибок в общую базу тестирования, сформирует запросы на слияние в ветку версии только по протестированному и подтверждённому функционалу. Подсистема рассчитана исключительно на клиент - серверную архитектуру тестовых ИБ. Поддерживаемая версии СППР 2.0.4.15, платформа не ниже 8.3.17.1549, 2.0.7.3 / не ниже 8.3.21.1664, начиная с релиза 1.0.4.30 требуется платформа не ниже 8.3.23 рекомендуемый релиз 8.3.23.1997

7000 руб.

26.08.2022    12557    10    10    

35

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

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

2400 руб.

04.07.2022    8368    38    1    

29

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

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

1800 руб.

20.01.2022    7783    19    0    

13

DevOps и автоматизация разработки Программист Платформа 1С v8.3 Бесплатно (free)

В проектной разработке часто возникают проблемы с однообразностью ландшафта, производительностью и быстрой разверткой инфраструктуры. Об одном из способов избежать или изолировать данные проблемы с помощью контейнеризации расскажем в статье.

18.09.2024    1730    antonov_av    6    

14

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

Когда информационная база «весит» несколько десятков/сотен гигабайт, для разработки и тестирования обычно используют полную копию рабочей базы. Но если информационная база превышает несколько терабайт, такой подход сталкивается с нехваткой места на диске, долгой реструктуризацией, замедленной скоростью работы и другими проблемами, связанными с размером базы. В статье расскажем, как правильно готовить копии больших баз для разработки и тестирования.

28.08.2024    6589    yuraid    28    

50
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. infosoft-v 927 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 536 19.05.21 15:27 Сейчас в теме
"Что такое CI/CD и зачем он нужен? 🚀На реальном примере" хорошее видео. В копилку
https://youtu.be/POoQitSQVUI
Оставьте свое сообщение