В мемориез - начинаем работать Jenkins


#1

MaxA @realMaxA 15:16
Ctr? щас что могу, расскажу )
Короче. Для новичков: Не надейся получить красивость легко и вот прям сейчас. Двигайся поступательно.
Задача: Наладить CI (гугол в помощь)

MaxA @realMaxA 15:21
Для 1С есть стек инструментов, которые предназначены для этого.
Базовая технология, на которой это всё построено – git. Почему git? Потому, что тоьлко он способен переварить объёмы, генерируемые 1с
Стоп. Я что-то вперёд убежал…
Зачем нам нужен CI? Для того, чтобы понимать состояние продукта. “Зелёный” – всё ок, “красный” – всё сломано.
Зелёный/красный определяется проходимостью тестов. какой-либо тест не прошёл, значит всё сломано и нужно срочно чинить.
(Вообще на тему CI в ютубе много семинаров выложено, рекомендую посмотреть, если сложно найти в печатном виде. подойдёт любой семинар, не обязательно про 1С)
(Я их смотрю в пробках :grinning:)

MaxA @realMaxA 15:27
Значит для начала нужны тесты и нужно уметь их запускать.
Тесты для 1С реализованы при помощи инструментов tdd ( https://github.com/xDrivenDevelopment/xUnitFor1C ) и bdd ( https://github.com/silverbulleters/vanessa-behavior ). Как писать тесты и их выполнять я писать не буду. Будем считать, что ты это умеешь.
Когда у тебя будут подготовлены тесты и ты будешь уметь запускать их из командной строки, тогда можно задуматься об автоматизации этого процесса. для этого и нужен CI
В качестве CI сервера можно использовать jenkins
Вообще CI это тупо шедулер запуска скриптов. Типа cron или windows scheduller
Но с красивым web-интерфейсом, правами доступа и прочими плюшками в виде отчётов etc

MaxA @realMaxA 15:33
Как поднять jenkins, рассказывать не буду, гугол в помощь
Но одного jenkins’а не достаточно. Нужен ещё git-сервер, который будет хранить исходники продукта и версионировать их
Я использую gogs, есть более “правильная” версия – gitea, вроде. Оно есплатно и работает под уиндоуз. Для линукса можно использовать gitlab.
Или ещё что-то
Как поднять git-сервер тоже рассказывать не буду
Следующая задача. получить исходники 1С.
для этого конфа разбирается на файлы (выгрузить конфигурацию в файлы).

MaxA @realMaxA 15:38
Но для истории изменений этого не достаточно. Возникает вопрос, как часто нужно выгружать исходники, чтобы следить за историей, и что делать, если в работе участвуют несколько разработчиков?. Ответ: хранилище и gitsync
gitsync это приложение, написанное на onescript (http://oscript.io)
Он выгружает каждый коммит хранилища в git.
Таким образом по всем правилам CI должно получиться: Разработчик коммитит изменение в хранилище, оно тут же выгружается в гит и на сервере CI производится сборка продукта со всеми тестами
Но 1С не может просто так взять и выгрузить один коммит и оттестировать его. Это занимает определнное время, поэтому в случае 1С тестироваться при интенсивной разработке будет не конкретный коммит, а сразу несколько коммитов. Это издержки 1С и с ними можно только мириться. Да и не каждый согласится, что поступать нужно обязательно так. Может быть достаточно одного ночного тестирования.

MaxA @realMaxA 15:43
поэтому нужно настроить периодический запуск gitsync для выгрузки изменений в хранилище в git-репозитарий.
Это делается уже на CI сервере. Зачем что-то делать руками?
Т. е. первый шаг, это gitsync
Потом сборка.
Нужно текущее состояние исходников собрать обратно в конфигурацию.
Очень полезный инструмент для этого https://github.com/silverbulleters/vanessa-runner
В итоге при сборке на CI мы будем иметь собранную из исходников конфигурацию.
Но база будет пустая. Нужно будет решить вопрос с наполнением её данными. Как минимум насоздавать пользователей, заполнить константы и пр.
Тут каждый изворачивается сам, как может.

MaxA @realMaxA 15:48
Пишутся обработки, готовится dt, на который накачивается cf, собранный из исходников… кому как удобнее
Потом запускаются тесты. Поможет тот же самый https://github.com/silverbulleters/vanessa-runner
Результат тестов уже автоматом отображается CI сервером в виде графиков
Вот и всё
синхронизация хранилища и git
сборка конфигурации из исходников, хранящихся в git
создание тестировочной базы из конфигурации (или сразу из исходников)
Наполнение тестировочной базы данными
Прогон тестов
Но в каждом шаге 100500 подводных камней и особенностей.
Новичку придётся перелопатить огромное количество материалов и освоить большое количество ноых технологий.
Какие-то из шагов можно изменить, адаптировать под себя или избавиться от них вообще.

MaxA @realMaxA 15:54
Некоторые вообще работают сразу в git без хранилища, но, ИМХО, для рядового 1С-ника это вообще нереальный высший пилотаж. К этому надо придти.


#2

Автор https://github.com/realMaxA

В помощь новичку - чтобы потом ссылку давать


#3

Это же скрипт с ютуб видео? текст это конечно быстрее, но может и на само видео рядом дать? или суть именно в этой минуте?


#4

это копипаст с gitter-канала.