Лендинг Косметики и Парфюмерии - как мы организовали процесс сбора дистрибутивов и систему контроля версий GIT


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

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

Итак, на момент написания статьи проект живёт в приватном репозитории на BitBucket и его главная страница выглядит следующим образом:

репозиторий лендинга косметики и парфюмерии в Bitbucket

Как видим, уже на главной странице репозитория (фактически в README.md) имеется полное описание продукта, репозитория, а так же краткая справка по документации (которая будет в дальнейшем постоянно пополняться в рамках цикла "Маленькие Хитрости").

Обратите внимание на структуру репозитория, которая имеет 4 основных ветки:

  • Мастер Установки - полноценный Модуль с мастером установки в Win1251 кодировке

  • Архив Дистрибутивов - набор дистрибутивов, который для загрузки в Маркет

  • Пример сайта в кодировке Win-1251 - готовый сайт (публичная часть, модуль, мастер, компоненты, шаблон)

  • Пример сайта в кодировке UTF-8 - готовый сайт (публичная часть, модуль, мастер, компоненты, шаблон)

Такая компоновка помимо прочего позволяет держать на машине разработчика всё аккуратно разведённым по директориям для независимой разработке согласно производственному циклу (о котором дальше):

Структура репозиториев GIT на машине разработчика

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

На картинке выше вы можете обратить внимание, что репозитории разделены на 2 группы:

  • сборки:
    • дистрибутивы
    • полный модуль
  • веб-окружения:
    • сайт в Win-1251
    • сайт в UTF-8

Это сделано по нескольким целям:

Во-первых, это позволяет не запутаться. Нет нужды переключаться между ветками. Ты всегда знаешь где что ДОЛЖНО находиться и строишь свою работу в соответствии с этим.

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

Для достижения максимального порядка в этих 4 ветках построен и рабочий процесс, наиболее наглядно который иллюстрирует схема коммитов/веток в Bitbucket:

история коммитов и вид веток проекта Лендинга косметики и Парфюмерии в Bitbucket

Взглянем на схему цикла чуть внимательнее:

Производственный цикл Лендинга Косметики и Парфюмерии в виде коммитов GIT

Производственный цикл по шагам

Шаг 1 - Альфа Версия

Разработка начинается в веб-окружении на сайте в Win-1251 кодировке. Это связано с требованием Маркета к кодировке проекта. Весь новый функционал реализуется на сайте, как на обычном клиентском ресурсе (компоненты, шаблон, файлы публичной части, инфоблоки, веб-формы). Никаких Мастеров и Модулей установки! Естественно разработка по возможности ведётся на идентичном окружении, поэтому зачастую начало производственного цикла приходится и на создание нового веб-окружения! Чтобы ID инфоблоков и веб-форм (а так же все остальные критичные данные, которые на реальном проекте заменит клиент) были идентичны и не влияли на историю репозитория.

В результате мы получаем коммит v #Номер_Релиза# ALFA в ветку site_1251.

Это полноценный функционал! Но он не содержит модуля установки!

Шаг 2 - Модуль

Фактически это то, что лежит в папке /bitrix/modules/denisoft.selexcellence/

Модуль собирается вручную. Другой способ лично мне не известен.

Тестируется как правило рядом на отдельном веб-окружении в кодировке Win-1251 до тех пор пока результат работы мастера не приведёт к созданию сайта идентичного шагу 1 (допускается только отклонение в папке /bitrix/wizards/, поскольку на шаге 1 мастер установки не создавался, а так же другие ID инфоблоков/веб-форм).

Поскольку дистрибутив с недавних пор лежит в корне репозитория, то его можно подключать в качестве субмодуля. Важно помнить о кодировке! Ни в коем случае нельзя подключать эту ветку на проектах в UTF-8 кодировке! Помните, что submodule - для опытных администраторов и разработчиков!

В результате мы получаем коммит v #Номер_Релиза# в ветку master.

Шаг 3 - сайт в Win1251

Успешным завершением предыдущей стадии фактически является обновление сайта в веб-окружении до стабильной версии обновление (напомним, что в результате шага 1 мы уже получили все компоненты, шаблоны и файлы публички, а теперь добавили мастер установки и модуль).

В результате мы получаем коммит v #Номер_Релиза# в ветку site_1251.

Шаг 4 - Дистрибутив

Возможно я вновь вызову бурю негодования. На сей раз сторонников замечательного решения Дениса Шаромова для создания дистрибутива из модуля.

Дело в том, что система контроля версий GIT показывает нам чем отличается предыдущая версия модуля от нынешней. Фактически остаётся только взять эти файлы и метки master и сложить в ветку distr. Дистрибутивы лежат не в корне папки, а в папке с именем версии, например 1.0.3.

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

В результате мы получаем коммит v #Номер_Релиза# в ветку distr.

Шаг 5 - сайт в UTF-8

Фактически это просто веб окружение в которое мы ставим свежую версию модуля. Поскольку из платные решения из маркета можно устанавливать только на коммерческие ключи (даже с купоном решения) и нельзя на DEMO установки, то мы обновляем до альфа версии онлайн площадку, после чего копируем оттуда модуль и разворачиваем решение.

Решение проходит ряд проверок, аналогичных тестам веб-окружению Win-1251 в целях поиска багов и недоделок. После чего коммитится полный слепок сайта: файлы публичной части, шаблон, модуль, мастер установки (мы стараемся приводить ID к единому виду и коммитить свеже развёрнутое по новому кругу решение, чтобы эти ID не смущали нас и истории GIT).

В результате мы получаем коммит v #Номер_Релиза# в ветку site_utf8.

На этом проозводственный цикл завершается, а свежая версия решения "Лендинг Косметики и Парфюмерии" переводится из альфа версии в стабильную.


Приятные бонусы

Трекер задач - Issue

Трекер задач - Issue

Замечательный инструмент Issue уже многим знаком. В частности он используется для сбора пожеланий по доработке решения "Простой Адаптивный Лединг" в моём репозитории на GitHub - https://github.com/lexnekr/bitrix_example_for_marketplace/issues .

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

Как можно заметить на примере все задачи были поставлены мною, хотя основание для некоторых из них стала обратная связь с вами, коллеги! Фактически приоритет задач и сроки их реализации (а так же то в каких релизах будет реализовано то или иное issue) определялось произвольно нами. У вас есть неплохая возможность повлиять на это.

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

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

Доступ к репозиторию для партнёров

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

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

Однако, мы так же понимаем какие преимущества даёт система контроля версий и набор центральных приватных репозиториев для развития проекта! Именно поэтому мы создали ветки для UTF-8 и WIN-1251 сайтов! У нас нет объективной потребности в контроле версий площадок веб-окружения для тестирования.

Но у нас есть потребность в контроле версий типовых проектов для того чтобы вы могли этим воспользоваться. Чтобы вы могли спокойно изменять страницы, кастомизировать шаблоны, компоненты, мастер и даже сам модуль по своему желанию! Для того, чтобы вы не боялись обновиться через систему обновлений 1С-Битрикс! Для того, чтобы вы могли посмотреть чем отличается ваш нынешний сайт (не только модуль, но сайт целиком, включая публичную часть) и при необходимости обновиться, совместив наши обновления со своими правками!

Ну и конечно для того, чтобы вы при желании смогли использовать этот центральный канал, этот концентратор информации для публикации своих правок:

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

  • Вы решили увековечить своё имя и поделиться улучшением (исправлением ошибки) - Pull request поможет нам!

Естественно тем партнёрам, кто ещё не умеет использовать систему контроля версий на своих проектах, но желает и готов немного поработать, я с удовольствием помогу развернуть репозитории и изучить основы GIT в силу своих скромных познаний (не претендую на роль Гуру, однако, мне кажется, мне удалось построить интересный рабочий цикл для решения "Лендинг Косметики и Парфюмерии", который может многим пригодиться).


Задойный А.В.



Лендинг Косметики и Парфюмерии - как мы организовали процесс сбора дистрибутивов и систему контроля версий GIT

<p> Решение " <!--noindex--><a rel="nofollow" target="_blank" href="http://marketplace.1c-bitrix.ru/solutions/denisoft.selexcellence/">Лендинг Косметики и Парфюмерии</a><!--/noindex--> " - платное коммерческое решение на базе бесплатной платформы "<a rel="nofollow" target="_blank" href="http://marketplace.1c-bitrix.ru/solutions/coffeediz.startbootstraplandingpage/">Простой Адаптивный Лендинг</a>", обладающее не только эксклюзивным оформлением и интересной историей, помогающей продавать, но это ещё и интересный эксклюзивный функционал, а так же особый процесс сборки дистрибутивов, позволяющий избавиться от возможных ошибок и делающий продукт максимально гибким. </p> <p> В этой статье мы слегка приоткроем дверь на производственную кухню, оказаться же на ней в живую (т.е. получить доступ к нашему производственному циклу) смогут партнёры, активно продающие решение. Это ещё один стимул (помимо партнёрских скидок и самого решения) для того, чтобы сотрудничать с нами. </p> <p> Итак, на момент написания статьи проект живёт в приватном репозитории на BitBucket и его главная страница выглядит следующим образом: </p> <p> <a href="/upload/medialibrary/0c6/0c6181dbf9a907337f937d4b2f52c56e.png"><img width="850" alt="репозиторий лендинга косметики и парфюмерии в Bitbucket" src="/upload/medialibrary/0c6/0c6181dbf9a907337f937d4b2f52c56e.png" height="681" title="репозиторий лендинга косметики и парфюмерии в Bitbucket"></a><br> </p> <p> Как видим, уже на главной странице репозитория (фактически в README.md) имеется полное описание продукта, репозитория, а так же краткая справка по документации (которая будет в дальнейшем постоянно пополняться в рамках цикла "Маленькие Хитрости"). </p> <p> Обратите внимание на структуру репозитория, которая имеет 4 основных ветки: </p> <p> </p> <ul> <li> <p> <b>Мастер Установки</b> - полноценный Модуль с мастером установки в Win1251 кодировке </p> </li> <li> <p> <b>Архив Дистрибутивов</b> - набор дистрибутивов, который для загрузки в Маркет </p> </li> <li> <p> <b>Пример сайта в кодировке Win-1251</b> - готовый сайт (публичная часть, модуль, мастер, компоненты, шаблон) </p> </li> <li> <p> <b>Пример сайта в кодировке UTF-8</b> - готовый сайт (публичная часть, модуль, мастер, компоненты, шаблон) </p> </li> </ul> <p> </p> <p> Такая компоновка помимо прочего позволяет держать на машине разработчика всё аккуратно разведённым по директориям для независимой разработке согласно производственному циклу (о котором дальше): </p> <p> <img width="457" alt="Структура репозиториев GIT на машине разработчика" src="/upload/medialibrary/3c2/3c2f61d9a2960c3b755aeeaeab6546f4.png" height="354" title="Структура репозиториев GIT на машине разработчика"><br> </p> <p> <i>Приношу извинения всем апологетам свободного программного обеспечения и маководам - как некоторые знают, я заядлый виндузятник...</i> </p> <p> На картинке выше вы можете обратить внимание, что репозитории разделены на 2 группы: </p> <p> </p> <ul> <li> сборки: </li> <ul> <li>дистрибутивы</li> <li>полный модуль</li> </ul> <li> веб-окружения: </li> <ul> <li>сайт в Win-1251 </li> <li>сайт в UTF-8 </li> </ul> </ul> <p> </p> <p> Это сделано по нескольким целям: </p> <p> Во-первых, это позволяет не запутаться. Нет нужды переключаться между ветками. Ты всегда знаешь где что ДОЛЖНО находиться и строишь свою работу в соответствии с этим. </p> <p> Во-вторых, это позволяет в любой момент времени обратиться к соответствующему направлению без риска утери данных в другом. При необходимости проверки бага в стабильной ветке UTF-8 сайта процесс сборки дистрибутива в ветке дистрибутива просто останавливается. Ничто никуда не теряется. </p> <p> Для достижения максимального порядка в этих 4 ветках построен и рабочий процесс, наиболее наглядно который иллюстрирует схема коммитов/веток в Bitbucket: </p> <p> <img width="850" alt="история коммитов и вид веток проекта Лендинга косметики и Парфюмерии в Bitbucket" src="/upload/medialibrary/4a4/4a46e5d838b48caedb57957c9fb169db.png" height="629" title="история коммитов и вид веток проекта Лендинга косметики и Парфюмерии в Bitbucket"> </p> <p> Взглянем на схему цикла чуть внимательнее: </p> <p> <img width="870" alt="Производственный цикл Лендинга Косметики и Парфюмерии в виде коммитов GIT" src="/upload/medialibrary/6be/6bec8f7a9c889828379df9e97941eb68.png" height="105" title="Производственный цикл Лендинга Косметики и Парфюмерии в виде коммитов GIT"> </p> <h2>Производственный цикл по шагам</h2> <h3>Шаг 1 - Альфа Версия</h3> <p> Разработка начинается в веб-окружении на сайте в Win-1251 кодировке. Это связано с требованием Маркета к кодировке проекта. Весь новый функционал реализуется на сайте, как на обычном клиентском ресурсе (компоненты, шаблон, файлы публичной части, инфоблоки, веб-формы). Никаких Мастеров и Модулей установки! Естественно разработка по возможности ведётся на идентичном окружении, поэтому зачастую начало производственного цикла приходится и на создание нового веб-окружения! Чтобы ID инфоблоков и веб-форм (а так же все остальные критичные данные, которые на реальном проекте заменит клиент) были идентичны и не влияли на историю репозитория. </p> <p> <b>В результате мы получаем коммит v #Номер_Релиза# ALFA в ветку site_1251.</b> </p> <p> Это полноценный функционал! Но он не содержит модуля установки! </p> <h3>Шаг 2 - Модуль</h3> <p> Фактически это то, что лежит в папке /bitrix/modules/denisoft.selexcellence/ </p> Модуль собирается вручную. Другой способ лично мне не известен. <p> Тестируется как правило рядом на отдельном веб-окружении в кодировке Win-1251 до тех пор пока результат работы мастера не приведёт к созданию сайта идентичного шагу 1 (допускается только отклонение в папке /bitrix/wizards/, поскольку на шаге 1 мастер установки не создавался, а так же другие ID инфоблоков/веб-форм). </p> <p> Поскольку дистрибутив с недавних пор лежит в корне репозитория, то его можно подключать в качестве субмодуля. Важно помнить о кодировке! Ни в коем случае нельзя подключать эту ветку на проектах в UTF-8 кодировке! Помните, что submodule - для опытных администраторов и разработчиков! </p> <p> <b>В результате мы получаем коммит v #Номер_Релиза# в ветку master.</b><br> </p> <h3>Шаг 3 - сайт в Win1251</h3> <p> Успешным завершением предыдущей стадии фактически является обновление сайта в веб-окружении до стабильной версии обновление (напомним, что в результате шага 1 мы уже получили все компоненты, шаблоны и файлы публички, а теперь добавили мастер установки и модуль). </p> <p> <b>В результате мы получаем коммит v #Номер_Релиза# в ветку site_1251.</b><br> </p> <h3>Шаг 4 - Дистрибутив</h3> <p> <i>Возможно я вновь вызову бурю негодования. На сей раз сторонников замечательного решения Дениса Шаромова для создания дистрибутива из модуля.</i> </p> <p> Дело в том, что система контроля версий GIT показывает нам чем отличается предыдущая версия модуля от нынешней. Фактически остаётся только взять эти файлы и метки master и сложить в ветку distr. Дистрибутивы лежат не в корне папки, а в папке с именем версии, например 1.0.3. </p> <p> Это сделано потому, что мы просто запаковываем потом этот архив и отправляем в маркет как есть. Увы, система контроля версий теряет свою основную роль в связи с этим и просто превращается в хранилище версий. Однако, это не страшно, поскольку дистрибутивы в чистом виде не нужны никому кроме мастера. </p> <p> <b>В результате мы получаем коммит v #Номер_Релиза# в ветку distr.</b><br> </p> <h2> Шаг 5 - сайт в UTF-8 </h2> <p> Фактически это просто веб окружение в которое мы ставим свежую версию модуля. Поскольку из платные решения из маркета можно устанавливать только на коммерческие ключи (даже с купоном решения) и нельзя на DEMO установки, то мы обновляем до альфа версии онлайн площадку, после чего копируем оттуда модуль и разворачиваем решение. </p> <p> Решение проходит ряд проверок, аналогичных тестам веб-окружению Win-1251 в целях поиска багов и недоделок. После чего коммитится полный слепок сайта: файлы публичной части, шаблон, модуль, мастер установки (мы стараемся приводить ID к единому виду и коммитить свеже развёрнутое по новому кругу решение, чтобы эти ID не смущали нас и истории GIT). </p> <p> <b>В результате мы получаем коммит v #Номер_Релиза# в ветку site_utf8.</b><br> </p> <p> На этом проозводственный цикл завершается, а свежая версия решения "Лендинг Косметики и Парфюмерии" переводится из альфа версии в стабильную. </p> <p> <br> </p> <h2>Приятные бонусы</h2> <h3>Трекер задач - Issue</h3> <p> <img width="850" alt="Трекер задач - Issue" src="/upload/medialibrary/6fe/6fe3992416ca6e71c830cf17dfe09a17.png" height="838" title="Трекер задач - Issue"><br> </p> <p> Замечательный инструмент Issue уже многим знаком. В частности он используется для сбора пожеланий по доработке решения "Простой Адаптивный Лединг" в моём репозитории на GitHub - <a rel="nofollow" target="_blank" href="https://github.com/lexnekr/bitrix_example_for_marketplace/issues">https://github.com/lexnekr/bitrix_example_for_marketplace/issues</a> . </p> <p> Однако в случае с коммерческим решением мы готовы дать партнёрам немного больше, чем просто список возможно реализуемых задач. <b><span style="color: #ff0000;">Активным партнёрам, которые продают наше решение мы готовы дать доступ к репозиторию с целью постановки нам ЗАДАЧ по доработке и развитию решения.</span></b> </p> <p> Как можно заметить на примере все задачи были поставлены мною, хотя основание для некоторых из них стала обратная связь с вами, коллеги! Фактически приоритет задач и сроки их реализации (а так же то в каких релизах будет реализовано то или иное issue) определялось произвольно нами. У вас есть неплохая возможность повлиять на это.<b><br> </b> </p> <p> <span style="color: #00a650;">Мы понимаем, что те кто продают, ближе к реальным потребностям клиентов и готовы идти им навстречу, чтобы совместно развивать решение и увеличивать продажи.</span> </p> <p> <i>Кроме того, вы первыми узнаете о грядущих обновлениях и планах, сможете спланировать свою работу, сформировав предложение для новых клиентов о покупке или для старых о внедрении и кастомизации функционала.</i><span style="color: #00a650;"><br> </span> </p> <h3> Доступ к репозиторию для партнёров </h3> <p> Мы прекрасно отдаём себе отчёт в том, что имея доступ к исходным кодам можно скопировать решение на такое количество сайтов, на какое пожелаете. </p> <p> Так же мы прекрасно понимаем, что купив лендинг для 1 сайта можно клонировать его на любое количество при желании и должной сноровке. </p> <p> Однако, мы так же понимаем какие преимущества даёт система контроля версий и набор центральных приватных репозиториев для развития проекта! Именно поэтому мы создали ветки для UTF-8 и WIN-1251 сайтов! У нас нет объективной потребности в контроле версий площадок веб-окружения для тестирования. </p> <p> Но у нас есть потребность в контроле версий типовых проектов для того чтобы вы могли этим воспользоваться. Чтобы вы могли спокойно изменять страницы, кастомизировать шаблоны, компоненты, мастер и даже сам модуль по своему желанию! Для того, чтобы вы не боялись обновиться через систему обновлений 1С-Битрикс! Для того, чтобы вы могли посмотреть чем отличается ваш нынешний сайт (не только модуль, но сайт целиком, включая публичную часть) и при необходимости обновиться, совместив наши обновления со своими правками! </p> <p> Ну и конечно для того, чтобы вы при желании смогли использовать этот центральный канал, этот концентратор информации для публикации своих правок: </p> <p> </p> <ul> <li> <p> Вы купили N лицензий, улучшили какой-то функционал и хотите накатить его на остальные свои проекты - система контроля версий GIT и наш с вами общий репозиторий в bitbucket позволят сделать это, избежав потенциальных ошибок из-за человеческого фактора. </p> </li> <li> <p> Вы решили увековечить своё имя и поделиться улучшением (исправлением ошибки) - Pull request поможет нам! </p> </li> </ul> <p> </p> <p> Естественно тем партнёрам, кто ещё не умеет использовать систему контроля версий на своих проектах, но желает и готов немного поработать, я с удовольствием помогу развернуть репозитории и изучить основы GIT в силу своих скромных познаний (<i>не претендую на роль Гуру, однако, мне кажется, мне удалось построить интересный рабочий цикл для решения "Лендинг Косметики и Парфюмерии", который может многим пригодиться</i>). </p> <p> </p> <p> <br> </p> <a href="http://plus.google.com/+АлексейЗадойный?rel=author" target="_blank"></a> <p style="text-align: right;"> <a href="http://plus.google.com/+АлексейЗадойный?rel=author" target="_blank">Задойный А.В.</a> </p> <br>

Возврат к списку

Яндекс.Метрика