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

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

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

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

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

Время на прочтение9 мин
Количество просмотров7.3K

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

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

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

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

Время на прочтение11 мин
Количество просмотров16K

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

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

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

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

Время на прочтение5 мин
Количество просмотров3.7K

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

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

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

Время на прочтение25 мин
Количество просмотров22K

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

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

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

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

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

Истории

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

Время на прочтение4 мин
Количество просмотров5.1K

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

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

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

Время на прочтение3 мин
Количество просмотров5.2K

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

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

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

Время на прочтение4 мин
Количество просмотров5.4K

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

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

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

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

Время на прочтение11 мин
Количество просмотров2.2K

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

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

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

Время на прочтение18 мин
Количество просмотров89K

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

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

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

Время на прочтение9 мин
Количество просмотров3.8K

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

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

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

Время на прочтение3 мин
Количество просмотров8.3K

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

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

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

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

Прагматичная разработка-2: фронтэнд

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров2.9K

Продолжение разработки простого проекта про specialty-кофейни на Кипре.

В первой части я рассказал про API микросервис, теперь расскажу про фронтэнд-сайт и в финальной статье - про бота для Telegram.

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

Статическое Python приложение в образе контейнера на базе scratch

Время на прочтение9 мин
Количество просмотров7.6K

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

Размер итогового образа контейнера получится всего лишь от 13 мегабайт.

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

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн

Настройка ToolChain(а) для Win10+GCC+С+Makefile+ARM Cortex-Mx+GDB

Время на прочтение16 мин
Количество просмотров23K

В тексте написано кокой путь проходят сорцы с момента написания до исполнения на микроконтроллере. Также про то как настроить ToolChain из бесплатных утилит. Показано на что стоит обратить внимание при запуске первого проекта на Cortex-M чипах. Этот текст, в сущности, пояснение того, что происходит под капотом большинства IDE.

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

Со скрипта на «верфь»

Время на прочтение11 мин
Количество просмотров5.6K

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

В целом, чтобы выбрать нужное решение чаще всего приходится поднять лабу, которая покроет 90% задач, чтобы понять насколько решение подходящее, а это значит пройти какую-то боль, потратить время и деньги. Но ещё помогают статьи, в которых рассматриваются частные случаи внедрения и подбор инструментов, чтобы научиться на чужих ошибках через объективный взгляд со стороны. Надеюсь, эта статья о том, почему и как мы пришли к решению с werf, поможет кому-то подобрать инструмент для своих нужд.

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

Как работать с Makefile-проектами в среде CLion

Время на прочтение12 мин
Количество просмотров5.5K

За последние несколько лет мне пришлось столкнуться с множеством вопросов, которые были сформулированы примерно так: "мой проект не открывается в среде CLion". В свою очередь, это приводило к необходимости из раза в раз объяснять разным людям примерно одно и то же. Статья имеет целью сохранить тот опыт, который был накоплен в процессе анализа десятков разных проектов. Предполагается, что официальная документация вам уже известна и не вызывает вопросов.

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

GOAPPLE: быстрая настройка I3-wm

Время на прочтение7 мин
Количество просмотров23K

Привет, Хабр! Сегодня я хотел бы рассказать вам о моём переезде на Linux под управлением оконного менеджера I3-wm. Попробую немного раскрыть тему настройки оконного менеджера и поделюсь своим опытом. Надеюсь кому-то будет полезно получить такого рода информацию.

P.s если вы не новичок, то вред ли узнаете много нового, но благодарю за внимание!

И так! Данная программа была разработана в целях бэкапа конфигурации системы, которую я использую каждый день - Manjaro I3. Я приготовил 3 конфигурации оконного менеджера I3-wm для систем: Manjaro, Solus и Fedora, так как они наиболее популярны на мой взгляд. Я использовал каждый из представленных дистрибутивов и временами меняю совой основной дистрибутив на один из них.

Я пользуюсь Linux с 18 февраля 2019 года, но летом 2020 я начал использовать Linux как основную систему (на тот момент ещё Ubuntu 20.04 LTS).

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

Введение в $mol. Часть 1. Модульная система

Время на прочтение35 мин
Количество просмотров11K

Эта статья открывает серию публикаций по обучению фреймворку $mol. Сегодня мы разберемся в модульной системе MAM. Речь пойдет об организации кода, отделении его от инфраструктуры, сборке, версионировании, нейминге, минимизации размера бандла, автоматическом выкачивании зависимостей, фрактальных моно-поли-репозиториях, разделении кода на платформы, альтернативе импортам/экспортам, автоматическом разруливании циклических зависимостей.

Читать далее
Всего голосов 21: ↑14 и ↓7+11
Комментарии21

Локальные репозитории пакетов

Время на прочтение12 мин
Количество просмотров14K

Всем привет! Сегодня хочу поделиться нашими мыслями относительно того, как защититься от санкций палок в колёсах в современных условиях. Собственно, что мы имеем ввиду? Речь идёт о том, что в крупных проектах часто есть единые точки отказа в процессах CI/CD, это может быть как простой репозиторий кодом, так и различные конвеерные системы сборки кода и доставки его в рабочие окружения. Если мы говорим про системный софт, то его можно просто перестать обновлять, запретить ему ходить "наружу", но в данной статье мы поговорим про внешние репозитории с кодом.

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

Вышел релиз GitLab 14.8 с новыми типами ключей SSH и механизмом правил по безопасности

Время на прочтение16 мин
Количество просмотров4.6K
Читать дальше →
Всего голосов 7: ↑6 и ↓1+8
Комментарии6

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

Работа

DevOps инженер
57 вакансий