Так, Торт .
Многие слышали, многие хотели попробовать, но откладывали.
Конечно, если вы все время работаете TeamCity или в Дженкинс а вы продолжаете, то зачем изобретать то, что и так отлично работает? Любите свою жизнь и будьте счастливы.
Но допустим, в вашей любимой жизни появился новый проект, новый дедлайн, минимум сюжетных очков до релиза, а опыта работы с новым строителем у вас нет? В данном случае мне пригодилось Торт .
Сразу оговорюсь, что данная статья не будет сразу побуждать вас к использованию Торт , как и меня, и многих моих коллег, не вдохновили опубликованные ранее статьи.
В основном потому, что нет смысла переходить на него в проекте, который не причиняет боли и работает стабильно.
Собери в свой любимый Дженкинс и все идет нормально.
Но после этой статьи пусть в вашей голове запомнится, что Торт существует. Повторюсь, он никуда не делся, он уже многое может и с ним становится легче работать.
Гораздо проще, чем было раньше.
Какой торт? Наверное любой разработчик, не погрязший в мире .
Сеть , найдёт ему аналогию: gradle, gulp, golang make .
Сделать системы – не открытие в 2020 году.
Это всегда было удобно, а значит, нужно и правильно.
Мир .
Сеть долгое время был лишен таких средств.
На самом деле так было и есть MSBuild , но у него много, много недостатков.
Главный из них — кто среди рядовых разработчиков вообще умеет этим пользоваться? И какова целесообразность его разработки? Очевидно, что на сервере сборки проще делать некоторые базовые вещи, которые нужны всем.
Возможно, для кого-то это удобно, но я уверен, что значительная часть сообщества предпочтет MSBuild Я изучаю новый сервер сборки.
Напишите конфиг один раз и забудьте его как страшный сон.
Что, если бы существовала система make с DSL на C#, автозаполнением и другими возможностями типизированного языка? Да, я говорю о Торт .
В частности, сейчас речь пойдет о библиотеке Торт.Глазурь , который является одним из бегунов make-системы.
Подробнее о доступных бегунах можно прочитать здесь: Торт-бегуны С Иней все знакомо — самодокументируемый API, с которым почти сразу находишь общий язык.
Методы расширения, загруженные из Нугет - на любой случай структура проекта, похожая на смесь тестов или бенчмарков и хоста Асп .
Все решения угадываются сразу, все как дома.
Иней от других бегунов Торт отличается тем, что существует не как инструмент, а как отдельный проект, который можно добавить в решение и хранить вместе с ним в репозитории.
Это делает работу с системой невероятно простой.
По сути, вам просто нужно создать новый проект и прикрепить к нему зависимость.
Торт.Глазурь , настройте хост сборки, и вы сможете запустить этот проект с помощью команды.
Чтобы нам было еще проще, есть шаблон проекта.dotnet run
Он даже поставляется со сценариями оболочки для Мак Операционные системы , Линукс И Окна , загрузка SDK, если его нет в среде.
Вместо этого стоит вызвать сборку через них интерфейс командной строки дотнет , если необходимо.
Вы можете прочитать больше об этом здесь: Замораживание начальной загрузки После создания проекта можно приступить к настройке процесса сборки.
Из основных мест нашего кода сразу уделяем внимание прогреву и очистке системы перед сборкой — это соответствующие методы класса.
Продолжительность жизни : Настраивать И Срывать .
У них принято чистить артефакты до и после сборки.
Вторая часть проекта, которая нас интересует, это папка Задания .
Все этапы сборки хранятся здесь в виде классов, являющихся потомками ЗаморозкаЗадача .
Задачи автоматически регистрируются в IoC-контейнере, как мы привыкли в Асп .
Более того, Иней реализует точно такой же шаблон с DI через IServiceCollection , к которому мы все привыкли.
Порядок выполнения шагов сборки определяется их зависимостями.
Анализ зависимостей начинается с корня графа, это задача по умолчанию.
По умолчанию .
Чтобы уведомить систему о том, что эта задача зависит от другой, можно установить атрибут [Dependency(typeof(MyPreviousTask))]
Где МояПредыдущаяЗадача — это задача, которую необходимо выполнить, отмеченную ранее.
Список задач может быть любым, в том числе и обычным:
- Восстановление пакета.
- Строить.
- Запуск модульных тестов.
- Публиковать.
- Поставка артефактов.
докер Короче говоря, все, что мы можем написать на C#.
Как уже говорилось выше, на данный момент существует множество пакетов с расширениями контекста выполнения, которые благодаря им понимают многие команды сборки.
Копирование файлов, удаление, журналирование и т. д. Единственный минус такого похода – захламленность.
IntelliSense windows с чудовищным количеством методов, но когда это нас останавливало? По этому поводу хотелось бы напомнить об относительно недавней особенности.
Чистое ядро – автономный Приложения.
В этом методе публикации необходимо явно указать рантайм-версию, в результате чего формируется не исполняющаяся в контексте библиотека.
дотнет , а запускаемое приложение, содержащее рантайм, находится, так сказать, «само по себе».
Это может быть полезно при упаковке в образ без установленной среды выполнения, если последняя по каким-то причинам не может быть установлена.
Нет причин не делать этого в Торт .
Когда все готово, настроено и загружено в репозиторий, делаем Т.
С.
или Дженкинс всего одна команда dotnet run .
/Build/Build.csproj
У вас будет свой путь к проекту (Ваша Кепка) и вы будете наблюдать, как происходит процесс медитативной сборки.
Иней записывает события сборки в стандартный вывод, который считывается сервером сборки, чтобы данные не были потеряны.
Конечно, это минимальный и самый простой сценарий использования системы.
Сервер сборки может отправлять дотнет аргументы при вызове сборки Иней .
Например, чтобы потом задать версию сборки или образа или тип среды выполнения или папку назначения — для публикации.
В общем, здесь полный простор для фантазии.
Мотивация
- Этот комфортный .
Вы пишете на своем основном языке и не зависите от выразительности скриптов и настроек/плагинов сервера сборки;
- Этот мобильный .
Вы загружаете код в репозиторий, и он универсально работает на любом сервере сборки.
И нет блокировки продавца.
- Этот версированный .
Код сборки хранится в репозитории.
Вместе с самим релизом.
- Это позволяет сохранять .
Если тарифный план билд-сервера не позволяет создавать множество конфигов сборки, вам нужен только тот, который запускает разные проекты.
Тот же результат без дополнительных затрат.
- Этот легко .
IntelliSense , автополный, разберётся даже ленивый старший.
Этот вопрос необходимо уточнить перед использованием системы.
Или добавьте свои собственные расширения, загрузите их на Нугет и быть очень, очень хорошим человеком.
Бонус — пример использования Торт.Глазурь на github .
Для начала скажите следующее: Связь Ссылка на сайт проекта Торт Теги: #разработка Linux #разработка #DevOps #C++ #.
NET #ci/cd #jenkins #automation #teamcity #ASP #ASP #make #cake #dotnetbook
-
Печать Абс-Пластиком На Холодном Столе.
19 Oct, 24 -
Структура Приложения
19 Oct, 24 -
Насколько Велик И Разнообразен Наш It-Мир!/?
19 Oct, 24 -
Хабразум Подскажите...
19 Oct, 24 -
Эксперименты С Записью Жизни (Лайфблогинг)
19 Oct, 24