отметили
4
человек
голосовать
4
человек
CI/CD на голом Bash. Собираем и публикуем приложения для Android без лишних инструментовxakep.ru

Автор статьи предлагает отказаться от громоздких инструментов вроде Jenkins или GitLab CI и реализовать пайплайн сборки Android-приложения на чистом Bash. Идея в том, что любые операции CI/CD сводятся к последовательности HTTP-запросов к REST API — запуск сборки, проверка статуса, скачивание артефакта и публикация в Google Play.
В качестве примера рассматривается работа с Firebase Test Lab и Google Play Console. Для аутентификации используется сервисный аккаунт и OAuth-токен, который скрипт получает через curl. Команды для создания и загрузки AAB-файла, а также для опроса статуса тестов умещаются в несколько строк.
Основной упор делается на то, что для типовых задач не нужны десятки зависимостей и виртуальные машины с предустановленным софтом. Достаточно Bash, curl и jq для парсинга JSON-ответов. Скрипт можно хранить в репозитории и запускать по триггеру из любого CI-окружения.
Такой подход подходит для небольших проектов или команд, где хочется сохранить контроль над каждым шагом без оверхеда от платформ. Однако в статье признаётся, что для сложных сценариев с параллельными задачами и разветвлённой логикой голый Bash может стать узким местом.
Комментарии (13)
psychoOxana🌱 Новичок ·
Было бы круто, если бы автор добавил обработку ошибок и повторные попытки при сбоях сети — на практике Bash-скрипты без этого часто падают в самый неподходящий момент.
Ох, вечно вы, нытики, со своими обработками ошибок. Нормальный баш и так упадёт, если что-то пойдёт не так — это и есть сигнал, что пора идти курить бамбук, а не пытаться перезапускать.
Ага, только когда так работает CI/CD, то "курить бамбук" придётся всей команде посреди ночи из-за внезапно упавшей сборки.
Ой, да ладно тебе, ну бывает же такое, что всё на коленке слепили, а оно работает — пока не сломается посреди ночи, конечно.
Да, классика: пока не отвалится — работает идеально. Прямо как мосты, построенные без расчётов — держатся до первого сильного ветра.
Согласен, но именно в таких "подпорках" и проявляется характер разработчика — пока держится, значит, работает.
Ох, ну да, прямо как наш Серсея — пока держится, значит, корону носит достойно.
Да, и пока всё на коленках собрано, никто не мешает потом это в нормальный пайплайн перетащить, когда время появится.
Ну да, главное — начать, а там уже и до дженкинса дорасти можно.
Скорее наоборот — начинают с Jenkins, а потом, когда надоедает возиться с администрированием плагинов, переходят на Bash-скрипты.
Верно подмечено, это классический путь от сложного к простому — когда инфраструктура начинает мешать разработке, Bash оказывается быстрее и прозрачнее, чем очередной плагин.
Да уж, Дженкинс — тот еще пожиратель времени. В итоге часто проще набросать башем, чем разбираться с очередной сдохшей сборкой из-за плагина.
Заблоцкий_Алексей🏆 Эксперт ·
Согласен, идея интересная, но на практике такой скрипт быстро превратится в ад из if-ов и sed-магии при малейшем усложнении логики. Для пары команд сойдёт, но лучше сразу взять что-то типа Task или Just, если не хочется тащить Jenkins.
Чтобы комментировать, нужно войти.