Обновить
8K+

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

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

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

Как мы перестали копировать .gitlab-ci.yml и спасли пайплайны от хаоса с помощью модулей

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели9.1K

Копипаст .gitlab-ci.yml по десяткам сервисов привел к config drift: пайплайны расходились, а правка одной строчки требовала 10+ MR. Вынесли логику CI в отдельный репозиторий модулей, подключаемых через include с версионированием по SemVer — в проекте остается только короткий файл с переменными. В итоге миграция с Kaniko на BuildKit заняла 5 дней вместо 2-3 недель, а типовой багфикс на 20 сервисах — 1 час вместо 11.

Смотреть, как устроены модули ->

Новости

archcheck — на страже архитектуры C++

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели11K

Открытый чекер архитектуры C++ для CI: циклы, копипаст, распухшие заголовки — в каждом PR. Плюс замер на 484 500 коммитов в поисках архитектурного дрейфа

Почему ревью это пропустило

redb.Route — Apache Camel для .NET, который мы написали потому что выхода другого не было

Уровень сложностиСложный
Время на прочтение38 мин
Охват и читатели11K

У вас не 5 микросервисов — у вас десятки. Бэкенд, который рос три года: монолит, расколотый на куски, GPS-фид от автопарка, мобильное приложение водителя, веб-кабинет диспетчера, интеграции с SAP / 1С / регуляторами / маркетплейсами, отдельный SMTP-воркер, отдельный PDF-генератор, отдельный шедулер ночных пересчётов. Между ними — Kafka (несколько кластеров, по топику на домен), RabbitMQ (RPC + pub/sub + DLQ), Redis (кэш, last-known-state, pub/sub-каналы), пара HTTP-эндпоинтов наружу, SFTP с поставщиком, SQL-polling outbox-таблицы старого монолита, MQTT с трекеров, IBM MQ для одного древнего банковского контура, SignalR-хабы для real-time-дашбордов. На каждом стыке — свой ретрай, свой DLQ (или нет DLQ), своя сериализация, свои метрики (или нет метрик), своя бойлерплейт-обвязка из консьюмеров и try/catch.

Каждый из этих стыков живёт своей жизнью в Program.cs соответствующего сервиса. Каждый — это hand-rolled цикл:

Читать далее

PVS-Studio в CMake: теперь официально

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели11K

Если у вас кроссплатформенный проект на C или C++, то, как правило, вы не завязываетесь на одну систему сборки, а используете генератор сценариев для сборочных систем. Самый распространённый из них, CMake, недавно получил официальную интеграцию со статическим анализатором PVS-Studio для этих языков.

Как это работает?

Самый маленький загрузчик (MBR 324 байта)

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели15K

В этом тексте я написал про то, как составить крохотный, но очень полезный загрузчик.

В программировании на STM32 бывает нужно сделать так, чтобы загрузчик оказался не в начале Flash памяти, а в конце.

Поэтому надо написать отдельную крохотную прошивку первичного загрузчика, которая при старте передает управление на другой адрес в физической памяти.

Читать далее

STM32 + GCC + CMake + Win10

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели12K

Написать на Си проект прошивки для микроконтроллера STM32F407VE. В качестве кросс компилятора выбрать GCC. В качестве системы сборки использовать CMake. В качестве HAL использовать фирменный HAL от STM и CMSIS от ARM. Собирать в Windows 10.

В данном тексте я покажу как можно организовать CMake скрипты сборки, чтобы собрать прошивку для микроконтроллера STM32.

Читать далее

Как мы интегрировали «Автосборку» с Maven-репозиторием

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели4.6K

В статье расскажу, как в Bercut реализовали интеграцию внутренней системы управления конфигурациями с популярной экосистемой Maven, что позволило обеспечить более удобное и стандартизированное распространение артефактов. Поделюсь проблемами, с которыми мы столкнулись при совмещении разных моделей идентификации артефактов и обеспечении корректности зависимостей, и расскажу о выбранном техническом решении на базе Jenkins, RabbitMQ и специального Consumer Service.

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

Читать далее

Сборка прошивки STM32 компилятором IAR при помощи GNU Make скрипта (IAR+Make=CI/CD)

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели10K

В этом тексте я покажу как собрать прошивку при помощи компилятора IAR и GNU Make файлов.

Собрать прошивку компилятором IAR с помощью GNU Make — это не просто возможно, это стандартный подход для автоматизации сборки, например, на CI/CD серверах, где использование IDE неудобно. IAR поставляется с набором консольных утилит, которые делают этот процесс вполне прямолинейным.

Читать далее

Как сделать GitLab CI/CD вашим лучшим другом для сборки и доставки Flutter приложений. Часть 3

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели6K

Flutter & GitLab CI/CD. Доставка мобильного приложения в Significa, TestFlight и Google Play

Привет! Меня зовут Данил Абдрафиков, я мобильный разработчик в компании TAGES. После успешной настройки сборки и подписания Flutter-приложений во второй части, остался последний, но не менее важный этап — дистрибуция приложения.

В современных условиях автоматизация деплоя на такие платформы, как Google Play, TestFlight и Significa, становится необходимостью. В этой статье мы разберем, как с помощью GitLab CI/CD настроить автоматическую отправку ваших приложений в магазины, чтобы вы могли сосредоточиться на разработке, а не на рутинных задачах.

Читать далее

Тюнинг .gitlab-ci.yml: 7 неочевидных фич GitLab CE для чистых и быстрых пайплайнов

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели9.1K

Сложно поддерживать CI/CD, когда граф пайплайна в GitLab превращается в бесконечную «простыню», параллельные запуски terraform apply приводят к блокировкам, а для игнорирования некритичных ошибок приходится писать || true

Может показаться, что для решения этих проблем нужны «костыли» или переход на enterprise-лицензию. На деле же с ними помогут встроенные возможности GitLab CE. В статье разбираем неочевидные ключевые слова .gitlab-ci.yml, которые сэкономят вам время и нервы.

Читать далее

Перезапрос упавшей статики

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9.4K

Статья про то как контролировать загрузку статики у себя в продакшн сборке и предотвратить сайд-эффекты.

Читать далее

Кэш-монтирование или Cache mount в Docker. Использование кэш-монтирования в GitLab CI/CD

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели9.7K

Кэш-монтирование в Docker — это мощный инструмент, который может значительно ускорить процесс сборки образов в CI/CD. Но его правильная настройка в GitLab требует понимания не только работы BuildKit, но и особенностей взаимодействия с различными конфигурациями GitLab Runner — DinD и DooD.

В этой статье я расскажу об устройстве кэш-монтирования в Docker и как его использовать в GitLab CI/CD. На примере простой сборки Python-проекта покажу готовые решения для кэширования зависимостей, чтобы оптимизировать сборку Docker-образов.

Читать далее

Книга в Markdown: Автоматическая сборка статического сайта mdBook и файла DOCX с оформлением по ГОСТ

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели10K

Markdown — популярный и удобный язык разметки, но это также и очень ограниченный формат. Поэтому задача написания в Markdown сложной технической документации по ГОСТ, научной статьи с автоматической настройкой оформления для заданного издательства или хорошо оформленного онлайн-учебника может показаться неосуществимой. В этой статье рассмотрим способ работы над научно-техническими статьями и книгами в формате Markdown на основе подхода Docs as Code с учётом строгих ограничений на оформление, используемый Петром Советовым и мной при подготовке учебных материалов в РТУ МИРЭА.

Способ заключается в применении утилиты pandoc для построения дерева абстрактного синтаксиса (AST) Markdown-документа с последующим переписыванием AST набором фильтров на Lua и трансляцией AST в форматы docx и pdf, соответствующие ГОСТ, а также в диалект markdown, совместимый с mdBook, для генерации онлайн-учебника.

Онлайн-версии книг, написанных с использованием описанного подхода, и репозитории с исходным кодом книг опубликованы на GitHub и GitHub Pages: книга по конфигурационному управлению, книга по разработке кроссплатформенных программмных систем.

Читать далее

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

10 лет werf: путь, который мы прошли вместе

Время на прочтение21 мин
Охват и читатели7.7K

10 лет назад мы запустили проект под названием dapp. Сегодня он известен как werf. За это время — тысячи коммитов, сотни релизов, переход на Go, Helm, CNCF, Nelm…

Собрали всю историю в одной статье — от первого Ruby-скрипта до экосистемы Open Source-инструментов.

Читать далее

Как жёсткие правила сборки релизов упростили жизнь инженерам финтеха

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.9K

Перевели инфраструктуру Java-разработки высоконагруженного финтеха с SLA 99,99% на доверенный репозиторий компонентов. Это отечественный продукт из экосистемы Axiom JDK. Делимся инженерными деталями этого перехода.

Читать далее

Как выжать максимум метрик из GitLab CI/CD

Время на прочтение6 мин
Охват и читатели7.6K

Привет, Хабр. Меня зовут Никита Лепёхин. Я DevOps-инженер в СберЗдоровье — MedTech-компании №1 в России.

Многие компании пользуются GitLab в качестве инструмента CI/CD. Но при использовании бесплатной Community-версии он не даёт достаточную наблюдаемость всех запускаемых пайплайнов. Поэтому актуальной задачей становится поиск инструмента для анализа GitLab CI/CD. Наш выбор для её решения — Apache DevLake.

В этой статье я расскажу, что такое Apache DevLake, как он организован, и каким образом мы смогли его применить под свои задачи.

Читать далее

Сборка высокопроизводительного AI-десктопа

Время на прочтение12 мин
Охват и читатели16K

Запуск больших языковых моделей на своём железе — это всегда поиск компромисса. Либо ты тратишь больше $10 000 на потребительские видеокарты, которые едва тянут модели на 70 миллиардов параметров, либо лишь мечтаешь о серьезном железе корпоративного класса, которое, увы, тебе не по карману. Платформа Grace‑Hopper — архитектура суперчипа NVIDIA, объединяющего CPU и GPU, — это именно та инфраструктура для ИИ, о которой грезит сообщество LocalLlama. Но такие системы обычно стоят от $100 000 и доступны только дата‑центрам и научным институтам.

Поэтому, когда на Reddit я наткнулся на систему Grace‑Hopper за 10 000 евро, первой мыслью было: «Это развод». А второй: «Интересно, получится ли договориться за 7500?».

Эта история — о том, как я купил корпоративное ИИ‑оборудование, изначально рассчитанное на жидкостное охлаждение в серверной стойке, но кое‑как переделанное предыдущим владельцем на воздушное. Затем я вновь переделал его на водяное охлаждение, пережил несколько ситуаций на грани фола (включая работу с GPU, который докладывал о температуре в 16 миллионов градусов) и в итоге получил десктопную систему, способную запускать у меня дома модели на 235 миллиардов параметров. Это рассказ о сомнительных решениях, творческом решении проблем и о том, что происходит, когда пытаешься превратить серверное чудовище в домашнюю рабочую станцию.

Если вам когда‑нибудь было интересно, что нужно, чтобы запускать по‑настоящему большие модели локально, или если вы просто зашли посмотреть, как кто‑то разбирает «железо» за $80 000 с одной лишь надеждой и бутылкой изопропилового спирта — вы по адресу!

Читать далее

Дневник альтруиста. CMake декорирование

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.4K

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

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

* Превью сгенерировано с помощью Adobe Firefly

Читать далее

Как упростить сборку на С++: мой open source-проект LightForge

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели12K

Когда много лет пишешь на C++ и регулярно работаешь с множеством небольших проектов, рано или поздно устаешь от рутины. Каждый раз — новый make-файл, новые зависимости и ошибки в длинных строках компилятора. В какой-то момент я поймал себя на мысли: «А почему бы не сделать сборку проще?». 

Читать далее

Статичный сайт на webpack5 с svg sprite

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели6.8K

Этот стартовый сборка для разработки статичного сайта на Webpack5. Максимально упростил разработку: можно подключать встариваемы модули шаблонов для страниц (header/footer), использовать SASS с удобными миксинами, автоматически собирать SVG-спрайты для иконок. Для продакшна - минификация CSS/JS, удаление console.log и разделение кода на чанки для кэширования.

Ключевые части сборки: html-webpack-plugin генерирует HTML из src/html/views, raw-loader подтягивает include-фрагменты.

SCSS миксины для удобных медиа запросов, краткой их записи +r($md).

Автоматическая генерация SVG-sprite, svg-sprite-loader собирает все src/icons/*.svg в inline-спрайт — иконки затем вставляются в шаблоны через .

Читать далее
1
23 ...