Как стать автором
Обновить
4.46

Системы сборки *

Системы автоматизации сборки

Сначала показывать
Порог рейтинга
Уровень сложности

Bazel, stamping, remote cache

Время на прочтение 10 мин
Количество просмотров 615
Блог компании Joom Тестирование IT-систем *Программирование *Go *Системы сборки *
Туториал

В Bazel есть любопытная фича, позволяющая добавить данные, которые не инвалидируют кэш сборки.

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

Разберемся, как stamping использовать...

Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

Новости

Путь миграции с go build на Bazel

Время на прочтение 6 мин
Количество просмотров 1.3K
Блог компании Joom Тестирование IT-систем *Программирование *Go *Системы сборки *
Туториал

При поиске решений для сборки больших проектов на Go с завидной регулярностью попадались отсылки на статьи про Bazel.

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

Читать дальше →
Всего голосов 13: ↑9 и ↓4 +5
Комментарии 14

Зачем мигрировать с go build на Bazel?

Время на прочтение 6 мин
Количество просмотров 2.5K
Блог компании Joom Тестирование IT-систем *Программирование *Go *Системы сборки *
Туториал

Это первый пост из цикла, посвященного миграции с go build на Bazel.

К процессу миграции мы подошли на этапе, когда запуск тестов на CI занимал примерно от 15 минут до часа. При этом мы уже успели реализовать некоторое распараллеливание и кэширование результатов тестов. Без этого тесты на одной машине должны были бы идти примерно часов восемь.

После внедрения Bazel запуск тестов на CI в основном укладывается в интервал от 1,5 до 25 минут (50 перцентиль в районе 12 минут), что гораздо комфортнее исходной ситуации.

Оговоримся, что сравнение этих цифр «в лоб» несколько некорректно: с одной стороны, за время пути кодовая база стала еще больше, а с другой – поменялась топология CI. Но в целом представление о полученном эффекте они дают.

Далее опишем, за счет какого механизма достигнуто ускорение.

Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 6

Организация автоматического запуска автотестов с использованием Downstream pipelines в GitLab CI

Время на прочтение 5 мин
Количество просмотров 1.2K
Блог компании SimbirSoft Тестирование IT-систем *Программирование *API *Системы сборки *

Привет, Хабр! Меня зовут Андрей, я SDET-разработчик SimbirSoft. В практике CI/CD один из общепринятых стандартов — настройка автоматического запуска автотестов при деплое сервиса на стенды. То есть при запуске сборки мы сразу видим, как пройдут смоук-автотесты, и на основе отчета решаем, передавать сборку дальше QA-команде или дорабатывать. А скорость исправления ошибок критично важна для бизнеса.

Мы разберем автоматический запуск автотестов с использованием Downstream pipelines в GitLab CI на примере проекта с несколькими микросервисами.

Читать далее
Рейтинг 0
Комментарии 0

Истории

Rush.js — как можно значительно ускорить сборку ваших проектов, используя кеширование

Время на прочтение 6 мин
Количество просмотров 1.3K
Блог компании Домклик Системы сборки *
Туториал

Кеширование сборок — это экспериментальная функция, позволяющая сохранять результаты последней успешной сборки и использовать их в качестве основы для последующих сборок. Это значительно ускоряет процесс, поскольку не пересобираются проекты, которые не изменились с момента последней сборки. Давайте посмотрим, как это работает.

Читать далее
Всего голосов 21: ↑20 и ↓1 +19
Комментарии 1

Настраиваем Gitlab CI для сборки Android-проекта

Время на прочтение 5 мин
Количество просмотров 3.3K
Блог компании Газпром-Медиа Холдинг Разработка мобильных приложений *Git *Разработка под Android *Системы сборки *
Туториал

Привет! Меня зовут Даша, я Android-разработчик в команде онлайн-кинотеатра PREMIER и я хочу с вами поделиться историей как мы начали приводить в порядок Gitlab CI скрипты :)

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

Погнали!
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 9

Используем Objective-C в C++ без проблем

Время на прочтение 6 мин
Количество просмотров 2.6K
C++ *Objective C *C *Разработка под MacOS *Системы сборки *
Из песочницы

Интегрируем Objective-C код из Apple SDK в C++ проект, без переписывания всего проекта на Objective-C++, с использованием PIMPL идиомы. Также, сборка всего проекта вместе с использованием Makefile и CMake (для генерации .xcodeproject).

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 37

Как я Jest с помощью SWC ускорял

Время на прочтение 7 мин
Количество просмотров 2.2K
Блог компании Домклик Разработка веб-сайтов *JavaScript *Тестирование веб-сервисов *Системы сборки *

За последние пару лет не раз можно было услышать про новые инструменты
сборки статики, такие как SWC, esbuild и Vite. Все они обещают нам next
gen-оптимизацию времени сборки, а SWC ещë и грозится оптимизировать
скорость выполнения тестов на Jest; более того, судя по документации,
сделать это очень просто. Я решил проверить, так ли это на самом деле и
каким будет результат. Если вам интересно, что из этого получилось и
какие были проблемы, то прошу под кат.

Начать читать под чашечку кофе
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 6

От кода «на коленке» к эффективному CI/CD: строим общий Pipeline as Code командой в 100+ человек

Время на прочтение 9 мин
Количество просмотров 6K
Блог компании Леруа Мерлен Groovy & Grails *Системы сборки *Управление сообществом *DevOps *
✏️ Технотекст 2022

Много команд, много продуктов, каждый автоматизирует релизный цикл, у каждого свой набор скриптов. Дублирование, отсутствие обмена практиками и повторное изобретение колеса приводит к тому, что команды тратят много времени на построение своего CI/CD. И все это поддерживает микросервисную архитектуру, где автоматизации нужно уделить особое внимание.

Меня зовут Владимир Цыбров, я релиз-инженер Леруа Мерлен и сегодня расскажу, какие в компании были подходы к построению пайплайнов и улучшению качества их кода. Спойлер: мы использовали подход InnerSource и предоставили командам self-service-инструменты.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 3

Allure TestOps: «Нестандартный» сценарий использования

Время на прочтение 9 мин
Количество просмотров 2.5K
Блог компании Delivery Club Tech Тестирование IT-систем *Тестирование мобильных приложений *Kotlin *Системы сборки *

Привет. Меня зовут Николай, я QA Automation Engineer в мобильной платформенной команде Delivery Club. Эта статья будет о том, как мы интегрировали Allure TestOps (далее Allure TO) в регрессионное тестирование нескольких мобильных приложений и ушли от TestRail. Альтернативу TestRail выбирали мои коллеги, и эту часть мы упомянем вскользь.

Этот материал будет интересен тем, кому предстоит интегрировать мобильные автотесты в Allure TO и хочется узнать про потенциальные проблемы. А также, возможно, тем, кому не полностью подходят стандартные сценарии использования этой TMS. Цель статьи — не дать конкретное решение, а продемонстрировать наш сценарий использования нетипичных возможностей TMS с небольшими вставками кода.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 0

Как мы внедряли Allure TestOps в стриминговом сервисе

Время на прочтение 11 мин
Количество просмотров 4.6K
Блог компании МТС Тестирование IT-систем *Java *Тестирование веб-сервисов *Системы сборки *
Туториал
✏️ Технотекст 2022

Всем привет! Меня зовут Иван Чечиков, я QA lead в МТС Digital, работаю над проектом стримингового сервиса WASD.TV. В этой статье я поделюсь опытом о том, как мы внедряли систему управления тестированием (TMS) Allure TestOps в наш проект и что из этого получилось. А еще отмечу подводные камни, с которыми столкнулись и обозначу пути их обхода. Статья может быть полезна тем, кто задумываются о переходе на данную TMS с других готовых решений, таких так Zephyr, TestRail, Test IT.

Подробности – под катом.

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 4

Как настроить CI в мобильных приложениях

Время на прочтение 5 мин
Количество просмотров 2K
Блог компании СберМаркет Разработка мобильных приложений *Системы сборки *DevOps *

Приветствую! Меня зовут Алексей Денискин, я тимлид мобильной команды СберМаркета. В этой статье я на примере покажу, как организовать CI для мобильных приложений на Android и iOS. Я буду использовать GitLab CI, но описанный подход применим к большинству стандартных стеков.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Миграция приложения из Docker Compose в Kubernetes. Как, зачем и с какими проблемами я столкнулся

Время на прочтение 25 мин
Количество просмотров 12K
Системы сборки *DevOps *Облачные сервисы *Kubernetes *
Из песочницы

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

Стоявшая передо мной задача: улучшить инфраструктуру и качество работы приложения, успевшего вырасти из MVP и стенда для одного клиента в популярный SaaS. Отсутствие отказоустойчивости и масштабируемости компонентов сервиса начало ощутимо мешать пользователям. Настала пора адаптировать приложение под кластерный режим.

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

Каково мигрировать приложение с уже сформированным техническим стеком и базой пользователей? Какие есть варианты решения, подводные камни? Как оценить есть ли смысл в таких трудозатратах? В этой статье я поделюсь своим опытом переноса приложения из Docker Compose в Kubernetes.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 15

Размер имеет значение! Часть 1

Время на прочтение 4 мин
Количество просмотров 4.7K
Git *Оболочки *Разработка под Android *Системы сборки *DevOps *
Туториал
Из песочницы

Как бы мы себя не обманывали - Размер имеет значение! И конечно, мы будем говорить о размере нашего андроид приложения, куда мы добавляем кучу классных features, и даже не задумываемся как это может негативно повлиять на размер приложения. Поэтому мы научимся обнаруживать регрессию размера нашего приложения на CI для автоматизации этого процесса. В данной части, обсудим как можно легко проверять размер в development ветке.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 12

Докеризированные команды и make, как стандартная точка в проект. Быстрый способ запуска разработки проекта на php

Время на прочтение 3 мин
Количество просмотров 3.3K
PHP *Системы сборки *
Туториал

В публикации опишу подход к использованию контейнеров docker и make который я практиковал последние несколько лет в своих рабочих командах и личных pet-проектах. Подход сформировался в процессе поиска минималистичного и унифицированного способа запуска проектов на php. Чтобы любой разработчик мог в пару простейших команд получить рабочую копию для разработки, располагая только доступом к репозиторию, без бубнов, обновляемых инструкций и тимлида на соседнем стуле.

Читать далее
Всего голосов 10: ↑8 и ↓2 +6
Комментарии 6

Задаём порядок деплоя ресурсов в Kubernetes с помощью werf/Helm

Время на прочтение 4 мин
Количество просмотров 3.6K
Блог компании Флант Системы сборки *DevOps *Kubernetes *

При деплое в Kubernetes часто требуется выкатывать ресурсы в определённом порядке, а иногда и дожидаться готовности сторонних ресурсов. Например, нужно сначала запустить БД, дождаться создания динамического Secret’а сторонним оператором, потом выполнить инициализацию или миграции БД, а уже затем запустить само приложение. 

Рассмотрим, как решать такие задачи с помощью Helm, а также сравним с более быстрым и удобным вариантом, который предлагает Open Source-утилита werf.

Читать далее
Всего голосов 29: ↑28 и ↓1 +27
Комментарии 4

Соберёмся? Вторая проверка проекта MSBuild

Время на прочтение 11 мин
Количество просмотров 1.9K
Блог компании PVS-Studio .NET *C# *Системы сборки *

MSBuild – популярная сборочная платформа с открытым исходным кодом от Microsoft, которую используют разработчики по всему миру. В далёком 2016 году мы уже проверяли проект при помощи PVS-Studio и нашли несколько подозрительных мест. Давайте посмотрим, что удалось обнаружить в коде MSBuild при повторной проверке.

Читать далее
Всего голосов 12: ↑9 и ↓3 +6
Комментарии 0

Руководство по CMake для разработчиков C++ библиотек

Время на прочтение 18 мин
Количество просмотров 36K
Open source *Программирование *C++ *C *Системы сборки *
Туториал
Из песочницы

Данное руководство позволит читателю составить полную картину того, как организовать сборку C++ библиотек с использованием современных возможностей CMake. Предполагается, что читатель имеет представление о базовых понятиях из мира CMake и динамических/статических C++ библиотек, так как в руководстве они могут не объясняться.

Читать далее
Всего голосов 71: ↑71 и ↓0 +71
Комментарии 46

Использовать ли Reusable Workflows в GitHub Actions?

Время на прочтение 9 мин
Количество просмотров 1.9K
GitHub *Системы сборки *DevOps *

CI система GitHub Actions достаточно свежа по сравнению со своими конкурентами, но продолжает радовать сочетанием легкости использования и постепенным расширением функционала. На мой взгляд, шаблонизация используемых пайплайнов это безумно важная составляющая, и в конце 2021 года GitHub закрыли этот вопрос, представив на наш суд Reusable Workflows. В данной статье я попробую поделиться собственным опытом построения проекта полностью на основе шаблонов workflow и порассуждать о применимости этого подхода.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Комментарии 5

Динамический импорт модулей в Python

Время на прочтение 3 мин
Количество просмотров 6.6K
Блог компании Sportmaster Lab Python *Программирование *Системы сборки *

Давайте представим ситуацию, когда вам нужно установить на все виртуальные машины (агенты сервера сборки) определенный пакет Python. Но вы не можете изменить образ агента, а загрузка, к примеру из pypi.org или github.com непроверенных пакетов, ограничена. Как тут не вспомнить последние новости про вредоносные изменения в пакете nmp или более свежую информацию про PyPi.

Python использует подход под названием EAFP — Easier to ask for forgiveness, than permission (легче попросить прощения, чем разрешения). Это значит, что проще предположить, что что-то существует (к примеру, словарь в словаре, или в нашем случае модуль в системе) или получить ошибку в противном случае.

Этот подход, развитый в PEP-0302, позволяет делать хук импорта модулей, что в итоге приводит нас к возможности написания следующего кода:

Читать далее
Всего голосов 15: ↑10 и ↓5 +5
Комментарии 8

Вклад авторов

Работа

DevOps инженер
63 вакансии