Что, если Continuous Integration – это прежде всего практика, а не набор инструментов?

07.12.22

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

Рано или поздно многие компании приходят к практикам DevOps. И начало этому – Continuous Integration. О том, что происходит в команде специалистов 1С, когда они переходят на Git, и почему простое внедрение CI-инструментов не решает проблему подходов к разработке, в докладе на Infostart Event 2021 Post-Apocalypse рассказал руководитель компании ПрогТехБизнес Александр Анисков.

Любая тема имеет маленькую предысторию, и у меня тоже есть такая.

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

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

Это было крайне неприятно.

В тот момент я решил – такого больше не повторится. Хранилища – наше всё.

Слева на слайде – схема о том, как у нас раньше в компании была устроена групповая разработка.

Мы использовали несколько хранилищ:

  • основную ветку хранилища для разработки плановой версии;

  • хранилище для исправительных версий;

  • и технические проекты у каждого программиста.

Схема была непростая, поэтому для pet-проектов я ее не использовал – я делал все гораздо проще.

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

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

После этого мы в компании перешли на Git вместо хранилищ, у нас появились элементы Continuous Integration (CI), и даже что-то из Continuous Delivery (CD).

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

Поэтому перед тем, как начать говорить о теме Continuous Integration, давайте просто поговорим про коллективную разработку.

 

Почему конфликты в Git обсуждают всем миром, а сравнение/объединение в 1С – это нормально?

 

 

Итак – групповая разработка. Это когда есть два программиста, которые работают над некой веткой основного хранилища. Здесь написано, что эта ветка называется master, но это не важно.

Они берут задачи и начинают работать.

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

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

Получается, что вместо того, чтобы делать что-то дальше, мы теряем время на то, чтобы это слить. И это – простой пример. В жизни всё гораздо сложнее, не мне вам рассказывать.

 

 

Давайте возьмём ещё одну популярную практику, когда к программисту добавляется молодой падаван, и появляется такая тема как пул-реквест. Через механизм пул-реквестов часто проводится код-ревью – интересный способ потешить своё самолюбие на фоне молодых специалистов.

Начинается все так же, как в предыдущем примере – оба разработчика берут свои задачи и начинают над ними работать. Наш опытный специалист заливает первую задачу и начинает работать над второй. В это время молодой специалист ему говорит: «Я закончил, посмотрите мой код». На что опытный программист отвечает: «Да-да, конечно, я посмотрю, только закончу свою работу и обязательно всё посмотрю».

Молодой программист у нас энергичный, талантливый – он берет новую задачу, начинает её делать, сливает её. А ему в это время: «Парень, я твою задачу посмотрел – давай, заливай!»

Как вы думаете, какие чувства будут у молодого разработчика по поводу этого? Он там когда-то в прошлом году закончил эту задачу, с тех пор в основной ветке уже многое поменялось, а ему говорят «вперёд, заливай». Это, в принципе, нормально?

 

Программист без интернета – это уже CI

 

 

Здесь стоит рассказать о том, какую боль изначально хотели решить люди, которые придумали концепцию Continuous Integration. В чем вообще заключается боль совместной разработки.

Концепция Continuous Integration родилась достаточно давно – Гради Буч сформулировал практически 30 лет назад (в 1991 году) в рамках практики экстремального программирования.

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

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

  • А Continuous она потому, что нужно интегрировать ваш код как можно быстрее – буквально каждые несколько часов.

Конечно, тут еще возникает вопрос ответственности, и на сцену выходят такие инструменты как Jenkins и автотестирование. Но я не хотел бы сейчас забегать вперед, потому что Continuous Integration вы можете организовать и без дополнительных инструментов проверки и тестирования. Как только вы отключите интернет и сядете кодить, у вас сразу начнется Continuous Integration – вы взяли задачу, сделали ее и залили в master; опять взяли, опять сделали и залили. И так далее – чем не CI?

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

Если мы заливаем реже – конфликты больше, мы решаем их дольше – мы опять заливаем реже. Это как снежный ком – чем дольше задачу будешь решать, тем больше проблем будет с заливкой.

Приведу хороший личный пример: у меня в компании есть программист, отличный специалист, я его очень уважаю, но у него есть любимая привычка взять какую-нибудь задачу, уйти на неделю в состояние астрала и выкатить маленький коммит размером с пол-конфигурации. А тут ты со своим маленьким изменением в роли пришёл и где-то на два часа завис, чтобы просто понять, что он вообще там натворил. Ничего не могу с этим поделать. Борюсь, как могу, но это моя боль как руководителя в данном вопросе.

У нас в 1С со сравнением-объединением вроде нет никаких проблем – все красиво в окошечке решается, но чтобы этого окошка дождаться, нужно время-время-время…

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

 

Решение – декомпозиция задач

 

Теперь надо поговорить о том, как эту проблему будем решать.

Моё предложение – это декомпозиция задач.

 

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

Если помните, что документ состоит из:

  • объекта и его набора реквизитов;

  • из форм;

  • из модулей объекта и менеджера, где описана бизнес-логика работы с документом;

  • из движений по регистрам и из каких-то печатных форм, которые мы получаем на выходе.

Здесь как раз стоит упомянуть про Git.

  • Всё, что вы меняете в коде – это текст с расширением *.bsl, и это легко мержится средствами самого Git, тут вообще нет никаких проблем.

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

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

  • У нас задача сделать документ, значит, первым делом мы должны максимально быстро накидать сам объект, его реквизиты и его табличные части. Никаких форм, никаких внешних интерфейсов. Вместе с документом мы закидываем какую-нибудь функциональную опцию, например, «ТестовыйРежим», на который повесим этот документ, чтобы в случае чего его можно было спокойно отключить. И заливаем это в конфигурацию. Поскольку изменений очень мало, слиться с такими изменениями большой проблемы не составляет. Если, конечно, у вас не будет конфликта на уровне configuration.xml, когда вы добавляете какой-то объект в конфигурацию одновременно с другим специалистом. Но на то вы и команда, чтобы такие моменты разрулить: «Давайте сейчас я объект добавлю, а потом вы дальше двинетесь. Мне нужно 5 минут».

  • После того как мы залили объект и поменяли configuration.xml, следующим этапом я предлаю посмотреть в сторону форм. Здесь вы уже можете зависнуть подольше, потому что требования к формам существенные, тем более, что в современном мире к usability предъявляются повышенные требования. Но у форм, хоть они и хранятся в репозитории в виде xml-файлов, на самом деле нет проблемы мержинга, потому что заливаются они легко, и вряд ли в это время кто-то сильно полезет в ваш объект.

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

  • Ещё один момент: мы не работаем с EDT по одной простой причине: пока там отсутствует механизм поддержки. Мы, к сожалению, в рамках принятой нами технологии разработки не можем отказаться от этого механизма – у нас очень много библиотек, как собственных, так и сторонних, которые мы держим в поддержке, и, к сожалению, EDT нам пока не даёт к нему прикоснуться.

  • Ну и на конец мы оставляем доработку движений по регистрам и реализацию печатных форм. Здесь на самом деле всё просто. Можно много спорить, но большинству пользователей глубоко фиолетово, какие регистры при проведении двигаются, и что просходит под капотом вашего документа. Главное, какой отчёт они в конце получат.

Если немного забегать вперёд и смотреть не только в сторону CI, но и на CD (Continuous Delivery, когда мы тоже максимально быстро доставляем до заказчика), этот механизм позволяет вам уже на втором этапе показывать заказчику прототипы каких-то объектов.

Но, естественно, вы должны соблюдать при этом правила безопасности. Поэтому:

  • накиньте функциональную опцию, чтобы механизм можно было отключить;

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

  • а иногда просто не поленитесь немного продублировать код, если понимаете, что ваш новый объект сильно меняет какую-то логику конфигурации.

Почему я акцентирую внимание на необходимости декомпозировать задачи, почему считаю это проблемой?

Я как управленец отвечаю не только за тот код, который мы делаем, но и за то, как думают аналитики. Если они ставят задачу, не декомпозируя её на части, не предполагая её выкатывать клиенту по частям, не предполагая обкатывать какие-то теории и тестовые экземпляры – все бесполезно. Вам выкатят большое ТЗ, и даже если вы будете так работать, весь профит, который вы получите, замкнется внутри вашей команды. Но для заказчика профита не будет. Я же, решая сегодняшние задачи разработки, стараюсь смотреть вперёд.

 

Пруфы в студию

 

Эта тема не новая – Google проводит ежегодные исследования State of DevOps. Здесь показан их слайд из доклада 2019-го года (рекомендую почитать вариант, переведенный на русский язык от Николая Воробьева-Сарматова).

Google нашёл связь между тем, как часто вы заливаете изменения и тем, насколько качественный у вас получается результат.

Они вывели несколько показателей продуктивности программного обеспечения – их всего четыре:

  • частота развертывания;

  • срок реализации изменений;

  • время восстановления сервиса;

  • доля неудачных изменений.

Если закрыть один глаз и засунуть голову в песок, то я, в принципе, могу считать, что моя компания находится в элите – у нас вообще все круто, потому что:

  • отдельно взятый программист у меня в компании готов всё развернуть по нескольку раз в день;

  • срок реализации изменений у него всегда меньше одного дня;

  • время восстановления сервиса – он взял быстренько в расширение киданул маленькую зашлёпку, и всё работает;

  • а доля неудачных изменений? Какие неудачные изменения, он за секунду всё поправил.

Т.е. высокая степень эффективности доставки ПО коррелирует с исполнителем и его желанием работать сверхурочно.

Но мы же понимаем, что по мере роста компании всё может сильно усложниться.

Чем больше программистов у нас будет, и чем больше задач у них будет в работе, тем будет хуже. И мы вдруг заметим, что свалились уже до одного релиза раз в месяц, а то и раз в несколько месяцев. А срок реализации изменений может растянуться на несколько месяцев, потому что задача у нас в бэк-логе может валяться чёрт знает сколько времени, и мы вообще не хотим ничего трогать, ну и так далее.

 

Перестаньте рекомендовать Gitflow

 

Здесь я хочу рассказать об еще одном мнении на организацию разработки: в 2015 году компания Thoughtworks в своем Technology Radar «накинули на вентилятор» сообществу и поставили любимую многими методику Gitflow в состояние hold – выразили сомнение в том, что она помогает организовывать DevOps в компании.

 

 

Методику GitFlow придумал Винсент Дриссен – в 2010 году он опубликовал статью с ее описанием. А в 2020 году выложил к своей статье 10-летней давности маленькую аннотацию. Ее примерный текст:

«Модель Gitflow была задумана более 10 лет назад, и она стала своего рода стандартом, а для кого-то – догмой или даже панацеей. Если вам нужно поддерживать несколько версий ПО, Gitflow по-прежнему подходит для вашей команды. Но если вы используете непрерывную поставку, это не лучший выбор. Панацеи нет, всегда думайте своей головой. Проблема Gitflow – в дисциплине, потому, что ветки feature и release могут висеть примерно вечность».

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

Но то, что ничего не стоит – обычно не ценится, и часто получается так, что за состоянием созданных веток никто не следит. А при Gitflow количество веток для вашего проекта будет множиться на количество программистов, и вы будете иметь несколько версий одного кода – несколько версий одной правды. Это будет только путать и усложнять процесс разработки.

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

Критикуя – предлагай. Если Gitflow – не лучший выбор, то что можно использовать?

  • Слева на слайде показано, как выглядит всем известный Gitflow – в нем две постоянноживущие ветки (master и develop), дополнительные ветки release и hotfix и много веток feature под задачи.

  • В середине – вариант, предложенный Гитхабом, GitHub-Flow. Сразу оговорюсь, этот вариант не очень применим в реалиях 1С – мы пока редко автоматизируем в репозитории деплой с проверкой. Вариант GitHub-Flow интересен тем, что у вас есть ветка, в которую вы коммитите, потом вы делаете пул-реквест, обсуждаете его с вашими коллегами-разработчиками, и после проверки производится мерж в основную ветку. Вариант простой – ветка, по большому счёту, одна, от неё ответвляется каждая задача, и так далее.

  • И есть ещё одна интересная методика от компании Google, которая намного интереснее в этом плане – она называется Trunk-based development. Если вы планируете переходить на Git или думаете о ветвлении, я рекомендую рассмотреть ее использование. Главное, на что надо обрать внимание в методике Trunk-based development – это то, что ветки (feature branches) должны закрываться очень быстро. Взяли задачку – сделали – залили, и так далее. Это повышенная ответственность, поэтому здесь нужно смотреть в сторону автотестирования и каких-то таких механизмов.

Кстати, забавный момент – по непроверенным источникам, Google не только использует эту методику, но ещё и любит моно-репозитории, т.е. у них в одном репозитории несколько программных продуктов.

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

 

Простой тест, есть у вас CI или нет

 

 

На сайте continuousdelivery.com Jez Humble опубликовал три вопроса, помогающих определить, действительно ли команда практикует CI

Вот эти три вопроса:

  1. Все ли инженеры помещают свой код в основную (а не в функциональные ветки) ежедневно?

  2. Запускает ли каждый коммит выполнение модульных тестов?

  3. Если сборка не работает, обычно она исправляется в течение 10 минут?

Ответьте на эти три вопроса честно, и вы поймёте, в каком примерно состоянии вы находитесь в рамках CI. Оставляю вам это на раздумье.

 

Итоги


Попробую подвести итоги:

  • Continuous Integration и вообще работа с непрерывной доставкой кода – это ни в коем случае не Jenkins, GitLab и другие инструменты. Это не значит, что инструменты плохие, просто они не решают проблему, пока вы не решите её в голове, методологически, пока вы не перестроитесь внутри компании.

  • В первую очередь, Continuous Integration – это практики, методики, подходы внутри компании. А дальше вы гвоздь хоть молотком, хоть микроскопом забивайте – результат будет хорош.

  • Continuous Integration нужен для того, чтобы избегать конфликты кода в разработке небольшой ценой каждый день, чтобы не решать их большой ценой в конце. На эту тему есть такая хорошая цитата от Линуса Торвальдса, автора Linux: «Если вы будете коммитить ваши изменения каждый небольшой кусочек времени каждый день, в конце вы обнаружите, что вам не надо решать проблему большого коммита».

  • И да, Continuous Integration – это не только про код, но ещё и про коммуникации внутри компании. Когда у вас код очень быстро доходит до основной ветки, вы внезапно начинаете больше между собой общаться, появляется меньше дублирования, меньше каких-то таких проблем.

У моих ребят-разработчиков при начале применения подходов CI часто возникал вопрос – как часто надо коммитить, как часто мержить. У меня на этот вопрос есть простой ответ:

  • коммитить надо тогда, когда ваш код хоть что-то делает;

  • а мержить – тогда, когда он ничего не ломает.

 

Почему для меня применение CI было так важно?

 

Помните начало? Когда мы решили (точнее, мы посовещались, и я решил), что у нас будут изменения, я хотел не просто заменить хранилище на Git и внедрить автотестирование, я хотел поменять принцип разработки в самой компании. Я много раз об этом говорил, но никогда не думал, что мы сможем это сделать.

Когда ты в компании, которую организовал, начинаешь такие кардинальные изменения, всегда есть шанс облажаться и не получить конечного результата.

Но я хочу, в первую очередь, сказать спасибо всем, кто делал доклады на темы Git’а, DevOps’а, CI – всем, кто выкладывал информацию.

Если ещё не начали применять CI – начинайте, не бойтесь. В интернете полно информации. А ребята из Инфостарта (это ни в коем случае не реклама) вам помогут, потому что крупные компании делятся с нами, и за это им огромное спасибо.

 

Полезные ссылки

 

Текст доклада выложен в репозитории – https://github.com/vandalsvq/is21_ci_as_practice Там вы найдете еще больше полезной информации.

 

Вопросы

 

На последнем слайде у вас было три вопроса. Как вы ответили на них в своей компании?

При любом внедрении всегда хочется подвести итог – получилось сделать или нет?

На первый вопрос: «Все ли инженеры помещают свой код в основную (не функциональную) ветку ежедневно» я с уверенностью могу ответить «Да». Мы смогли добиться того, чтобы все наши программисты каждый день заканчивали кодом.

А аналитики?

Тут уже другая проблема. Я уже говорил, что если аналитики не разбивают задачу, не умеют ее декомпозировать, а выдают вам ТЗ на несколько десятков страниц, и к ним нужно идти и объяснять, что так нельзя.

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

Второй вопрос: «Запускается ли каждый коммит выполнение модульных тестов?» Признаюсь – нет. С автотестированием у нас пока беда, потому что я просто не могу победить вот эти коммиты раз в неделю размером с полконфигурации. Я понимаю, что при этом можно делать тестирование. Вопрос только в том, что тестирование на разных ветках – разное. Где-то есть простые тесты, где-то – более сложные. Где-то – сценарные тесты. Но если у меня специалист в основную ветку выкатывает огромные изменения – тут сказывается моя управленческая проблема. Инструменты тестирования, которые я пробовал, действительно работают, помогают, но дальше меня это пока не ушло.

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

Т.е., если судить по ответу на первый вопрос – у нас все получается. А по второму и третьему вопросу – пока с натягом. Но большой путь начинается с маленьких шагов. Поместите свой код в Git, и у вас появится магия – захочется это как-то развить дальше, получить пользу, чтобы все было не зря.

 

Постскриптум. Взгляд из декабря 2022 года

 

Если посмотреть календарь, 21-й год был «вчера», но я уверен, у всех ощущение, будто прошло порядком больше.

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

****

Цитата: 

И вроде бы всё хорошо, но «серебряной пули» не случилось – я как руководитель не понял, в чем мы выиграли.

Пояснение:

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

А время, которое я тратил на передачу кода от себя в компанию, составляло несколько секунд (конечно же, без учета времени его написания).

Как стало удобно (и быстро) разбираться в истории изменений, откуда проблема, кто ее принес. А если это не проблема, то почему тот или иной код появился.

В общем, чтобы у читателя не было ощущения, будто «я не умею готовить кошек», скажу так. Кошка очень даже вкусная. 

Но здесь речь идет не обо мне в моем обличии программиста, а речь обо мне, в лице руководителя. Поэтому ключевая фраза «я как руководитель»

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

****

К чему весь этот «разгон» про Continuous Integration и азы групповой разработки?

Пояснение:

Большинство работает в команде, у кого есть хранилище, для них проблемы конфликтов не столь актуальны, особенно если они живут в одном хранилище все. Захватил объект и гарантировал себе неприкосновенность своего решения.

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

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

Об этих «страданиях» и идеях, как их решить, я и пытался как-то кратко рассказать...
 

****

Немного про «декомпозицию».

Пояснение:

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

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

Однако, когда я пытался донести подобный подход до других, я сталкивался с недопониманием. Со стороны аналитиков, других программистов, заказчиков. И им приходилось объяснять, почему надо смотреть «полуфабрикат».

Возможно, я когда-нибудь более детально рассмотрю этот вопрос, но сложилось ощущение, что мало кому интересна эта тема. Если интересна, пишите, наберется аудитория – будет с кем обсуждать – будет причина написать.
 

****

Блок «пруфы в студию» по-хорошему надо было где-то в конец поставить, я уже не помню, почему вдруг он пошел выше того же обсуждения ветвления.

Поэтому если у читателя возник вопрос «куда тебя понесло», то пропускайте, дочитывайте до главы «Простой тест, есть у вас CI или нет» и где-то там эта глава будет более логичной.
 

****

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

Мы по-прежнему пользуемся теми инструментами, что внедрили. Я на себе обкатываю возможность применения конфигурации «Тестер» с целью сценарного тестирования, в планах есть его интегрировать в процесс.

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

 

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

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

 

См. также

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

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

2500 руб.

20.06.2023    22679    21    4    

321

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

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

4900 руб.

29.06.2022    12085    104    4    

134

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    1360    15    1    

8

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    12679    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    8471    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    7844    19    0    

13

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

Когда в хранилище одновременно разрабатывают несколько команд, сортировка сделанного и несделанного при формировании релиза и проведение code review по задачам превращаются в непроходимый квест. В таких случаях нужен бранчинг. Расскажем об опыте перехода на новую схему хранения кода для ИТ-департамента.

23.09.2024    3200    kraynev-navi    3    

26
Оставьте свое сообщение