Telegram Group & Telegram Channel
Актуальна ли разработка под macOS?

Проекты под macOS никогда не были для меня актуальными настолько, чтобы я уделял им значительное количество времени. Занимался я в основном небольшими приложеньками и исключительно для того, чтобы быть в курсе "что нового в ките и суи для макоси". Да и разработчики под настольную ось мне всегда казались отдельной кастой, ведь бизнесу сегодня в первую очередь нужны мобилки и вэб.

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

И мы с командой решили активно инвестировать в это решение, но даже не знали что нас ждет))

Три основных вывода:

1️⃣ SwiftUI для macOS - продакшн рэди .
2️⃣ То, что изначально воспринималось, как "однокнопочный UI для tuist generate и `pod install`", в результате стартануло большой рефакторинг всего проекта. Одно лишь внедрение системы кеширования модулей фича-команд привело к значительному снижению времени холодной сборки.
3️⃣ Многие крупные компании либо уже прошли активную фазу создания подобных инструментов, либо находятся в ней. Довольно активно своим опытом делится Сбер на крупных конференциях.

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

Если в вашем проекте наклевываются или уже используются отдельные модули, причем не важно, что вы используете: cocoapods, spm, чистый tuist или свое/другое решение, то начните с изучения официального руководства Apple по системе сборки.

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

Вот краткий список основных функций, что уже внедрены:

🟢 GUI и CLI версии. CLI разрабатывается с прицелом для внедрения на CI-сервера, но активно используется и на локальных машинках.
🟢 Версионирование модулей. Имея сотни модулей от фича-команд нужно с удобством управлять их версиями.
🟢 Кеширование модулей и поддержкой ремот-кеша. Если среди сотен модулей вам нужно доработать 1-2-3, то зачем тратить время на постоянную пересборку остальных? А при условии, что они уже были собраны кем-то другим, то можно просто переиспользовать чужой кеш. На самом деле это одна из самых проблемных и неочевидных задач, особенно если говорить про инвалидацию кеша, когда при изменении одного модуля, зависящие от него не должны браться из кеша.
🟢 Вызов консольных команды из Swift. Причем с полной интеграцией со Swift Concurrency. И на самом деле сделать так, чтобы при отмене таски в Swift принудительно останавливалось выполнение запущенной консольной команды - это был взрыв мозга.
🟢 Контроль, установка и обновление окружения. С помощью единой тулзы мы обеспечиваем единое окружение: версии Xcode и необходимых зависимостей.
🟢 Автообновление. Нужно было сделать так, чтобы новые версии приложения оперативно становились доступны разработчикам и приложение обновлялось в автоматическом режиме по нажатию одной кнопки. Супер-популярный Sparkle не подошел из-за закрытой инфраструктуры и необходимости авторизации на внутренних сервисах. При этом нужно учесть, что иногда происходят ломающие изменения и новая версия нашей тулзы не сможет собрать какой-то старый коммит основного проекта. А собрать нужно.
🟢 Интеграция с git. Клонирование, чекаут, контроль текущей ветки.
🟢 Сборник часто используемых задач. Запуск очистки кешей и DerivedData. обновление паролей и токенов и многие другие задачи - нажатием одной кнопки.



tg-me.com/ios_appdev/164
Create:
Last Update:

Актуальна ли разработка под macOS?

Проекты под macOS никогда не были для меня актуальными настолько, чтобы я уделял им значительное количество времени. Занимался я в основном небольшими приложеньками и исключительно для того, чтобы быть в курсе "что нового в ките и суи для макоси". Да и разработчики под настольную ось мне всегда казались отдельной кастой, ведь бизнесу сегодня в первую очередь нужны мобилки и вэб.

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

И мы с командой решили активно инвестировать в это решение, но даже не знали что нас ждет))

Три основных вывода:

1️⃣ SwiftUI для macOS - продакшн рэди .
2️⃣ То, что изначально воспринималось, как "однокнопочный UI для tuist generate и `pod install`", в результате стартануло большой рефакторинг всего проекта. Одно лишь внедрение системы кеширования модулей фича-команд привело к значительному снижению времени холодной сборки.
3️⃣ Многие крупные компании либо уже прошли активную фазу создания подобных инструментов, либо находятся в ней. Довольно активно своим опытом делится Сбер на крупных конференциях.

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

Если в вашем проекте наклевываются или уже используются отдельные модули, причем не важно, что вы используете: cocoapods, spm, чистый tuist или свое/другое решение, то начните с изучения официального руководства Apple по системе сборки.

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

Вот краткий список основных функций, что уже внедрены:

🟢 GUI и CLI версии. CLI разрабатывается с прицелом для внедрения на CI-сервера, но активно используется и на локальных машинках.
🟢 Версионирование модулей. Имея сотни модулей от фича-команд нужно с удобством управлять их версиями.
🟢 Кеширование модулей и поддержкой ремот-кеша. Если среди сотен модулей вам нужно доработать 1-2-3, то зачем тратить время на постоянную пересборку остальных? А при условии, что они уже были собраны кем-то другим, то можно просто переиспользовать чужой кеш. На самом деле это одна из самых проблемных и неочевидных задач, особенно если говорить про инвалидацию кеша, когда при изменении одного модуля, зависящие от него не должны браться из кеша.
🟢 Вызов консольных команды из Swift. Причем с полной интеграцией со Swift Concurrency. И на самом деле сделать так, чтобы при отмене таски в Swift принудительно останавливалось выполнение запущенной консольной команды - это был взрыв мозга.
🟢 Контроль, установка и обновление окружения. С помощью единой тулзы мы обеспечиваем единое окружение: версии Xcode и необходимых зависимостей.
🟢 Автообновление. Нужно было сделать так, чтобы новые версии приложения оперативно становились доступны разработчикам и приложение обновлялось в автоматическом режиме по нажатию одной кнопки. Супер-популярный Sparkle не подошел из-за закрытой инфраструктуры и необходимости авторизации на внутренних сервисах. При этом нужно учесть, что иногда происходят ломающие изменения и новая версия нашей тулзы не сможет собрать какой-то старый коммит основного проекта. А собрать нужно.
🟢 Интеграция с git. Клонирование, чекаут, контроль текущей ветки.
🟢 Сборник часто используемых задач. Запуск очистки кешей и DerivedData. обновление паролей и токенов и многие другие задачи - нажатием одной кнопки.

BY Мобильный кот




Share with your friend now:
tg-me.com/ios_appdev/164

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

A Telegram spokesman declined to comment on the bond issue or the amount of the debt the company has due. The spokesman said Telegram’s equipment and bandwidth costs are growing because it has consistently posted more than 40% year-to-year growth in users.

How Does Telegram Make Money?

Telegram is a free app and runs on donations. According to a blog on the telegram: We believe in fast and secure messaging that is also 100% free. Pavel Durov, who shares our vision, supplied Telegram with a generous donation, so we have quite enough money for the time being. If Telegram runs out, we will introduce non-essential paid options to support the infrastructure and finance developer salaries. But making profits will never be an end-goal for Telegram.

telegram from tr


Telegram Мобильный кот
FROM USA