Мы в конце концов пришли к этому. Пока публиковалась статья, мы завезли решение на вебхуках) Для этого подняли небольшой сервис, который принимал запросы от вебхука битбакета (настроенного на обновления пул реквестов) и отправлял запросы на добавление билда в Teamcity.
У нашей компании закуплен Bitbucket server, поэтому используем его. Требования к инфраструктуре было чтобы все ресурсы, которые имеют доступ к коду находились на корпоративных серверах, поэтому мы не могли использовать облачные сервисы.
Насчет дженкинса — имхо, тимсити для нашей команды удобнее.
Проблемы стали всплывать не сразу, после некоторых обновлений Teamcity и Bitbucket.
В самом начале статьи написано сколько было сэкономлено часов, благодаря работе команды. Релиз приложения — очень ответственный момент и часы человека, который занимается этим делом стоят, вероятно, не мало. Так что затраты по созданию этой инфраструктуры окупятся довольно быстро.
Есть много статей-туториалов на тему навигации с Jetpack, внедрения зависимостей, многомодульности и многое другое. Понимание как это все композировать — результат проб и ошибок каждого разработчика, не у всех есть время и желание писать статьи обо всем этом. Лучший способ получить опыт в профессиональной разработке — попасть в команду, где большая часть команды — сильнее тебя. Сложные задачи и советы опытных ребят дают хороший буст)
Я сам ни разу не работал с dynamic delivery, но все что нужно сделать, чтобы этот подход работать — создать новый зависимый модуль вместо app. На тему навигации с dynamic delivery есть статья, причем подход с гад модулем автор считает громоздким)
В случае с Dynamic Delivery Feature модуль app является самым зависимым — как core. Соответственно нужен новый модуль, который будет знать о всех фичах, такой как app сейчас. Есть статья на эту тему, там объясняется как построить навигацию с dynamic delivery, причем подход с гад модулем автор считает громоздким)
Свои NavCommand нужны для одновременного внедрения
1. id action
2. args
3. navOptions
для выполнения одной команды навигации.
Если использовать Safe Args, то первые два параметра можно можно объединить в один, но если понадобится navOptions, то его придется передавать отдельно, поэтому NavCommand класс полезен)
Если кто собрался использовать у себя на проекте такой подход, то я запилил библиотеку github.com/MrSwimmer/Pwc чтобы не переписывать/копировать хэлперы.
Насчет дженкинса — имхо, тимсити для нашей команды удобнее.
Проблемы стали всплывать не сразу, после некоторых обновлений Teamcity и Bitbucket.
Время сборки больше часа -> меньше успевают в релиз -> вопросы руководства к Антону -> анализ проблемы, а дальше наш случай)
1. id action
2. args
3. navOptions
для выполнения одной команды навигации.
Если использовать Safe Args, то первые два параметра можно можно объединить в один, но если понадобится navOptions, то его придется передавать отдельно, поэтому NavCommand класс полезен)
И хороший разбор: startandroid.ru/ru/courses/architecture-components/27-course/architecture-components/542-urok-14-paging-library-chast-1.html