Вопрос или проблема
Я использовал CruiseControl.Net в качестве CI/CD для своих старых проектов, и его можно было настроить так, чтобы он отображал ошибки и предупреждения сборки в отдельном, красивом и легко читаемом веб-интерфейсе. Это было потрясающе. К сожалению, CruiseControl.Net давно заброшен. Совсем не современно.
Я немного использовал TeamCity, который также имел (и, как я думаю, все еще имеет) аналогичную функцию для проектов .NET. Однако это коммерческое, а не открытое решение, и я хочу полнофункциональное локальное и открытое решение.
Есть Jenkins, который, как я помню, также имеет эту функцию. Но Jenkins – это ресурсозатратный монстр, который требует Java, потребляет много ресурсов даже в бездействии (проект довольно мал, поэтому каждое увеличение ресурсов важно) и так далее. Это немного чрезмерно, и он не легковесный.
Все остальные CI/CD, с которыми я столкнулся, предоставляют только отображение журнала сборки и… Это все. Нет интерфейса для ошибок и/или предупреждений, встреченных во время сборки, вам нужно вручную копаться в журнале сборки.
Речь идет о проекте .NET 6.0 ASP .NET Core.
Я что-то пропустил?
Вы пробовали drone? Он основан на Docker и имеет графические интерфейсы, такие как https://github.com/drone/drone-ui
Ответ или решение
Вопрос о выборе легковесной и современной CI/CD системы с возможностью отображения ошибок и предупреждений сборки в веб-интерфейсе — актуальная задача для многих разработчиков, особенно тех, кто работает с проектами на .NET. Рассмотрим несколько подходящих решений, которые соответствуют вашим критериям.
1. Drone CI
Drone CI — это небольшая, основанная на Docker система непрерывной интеграции и доставки, которая завоевала популярность благодаря простоте использования и наличию веб-интерфейса. Основные особенности Drone:
- Docker-ориентированность: Каждое задание в Drone выполняется в изолированном контейнере Docker, что упрощает управление зависимостями и средами для каждой сборки.
- Интуитивно понятный интерфейс: Вы можете просматривать статусы сборок, а также легко выявлять и визуализировать ошибки и предупреждения благодаря удобному GUI.
- Open Source: Drone полностью открыт, что позволяет вам настраивать и модифицировать систему под свои нужды без дополнительных затрат.
Как использовать Drone для .NET проекта:
- Установите Docker и Drone на своем сервере.
- Настройте файл конфигурации
.drone.yml
, который описывает ваши сборочные шаги. - Создайте веб-интерфейс Drone, который отображает сборки и их результаты.
2. GitLab CI/CD
GitLab CI/CD — еще одно мощное решение, которое предлагает встроенные функции непрерывной интеграции и доставки. Особенности GitLab CI/CD включают:
- Интеграция с GitLab: Если вы уже используете GitLab для хостинга репозиториев, вам не нужно настраивать отдельные инструменты.
- Простой веб-интерфейс: Интерфейс GitLab предоставляет вам возможность видеть статусы сборок, предупреждения и ошибки в рамках отдельной панели, что упрощает процесс отладки.
- Поддержка .NET: Вы можете легко настроить сборки для .NET 6.0 проектов при помощи скриптов и образов Docker.
Настройка GitLab CI/CD для .NET:
- Используйте файл
.gitlab-ci.yml
для определения шагов сборки. - Воспользуйтесь встроенными функциями GitLab для отслеживания статусов сборок и отображения ошибок.
3. CircleCI
CircleCI — облачная платформа для CI/CD, но она также поддерживает локальные установки через CircleCI Server. Основные функции включают:
- Легковесный и быстрый: CircleCI может быть более эффективен по сравнению с Jenkins и предлагает удобные инструменты для .NET сборок.
- Информативный интерфейс: Вы можете видеть статус сборки и ошибки непосредственно в панели инструментов.
Применение CircleCI с .NET:
- Настройте файл конфигурации
.circleci/config.yml
. - Используйте стандартные интеграции для работы с .NET и легко управляйте выводами ошибок.
Заключение
Для вашего проекта на .NET 6.0 я рекомендую уделить особое внимание Drone CI и GitLab CI/CD. Оба инструмента легким и современным подходом к непрерывной интеграции и могут обеспечить необходимые возможности для легкого отображения ошибок и предупреждений в веб-интерфейсе. Обе системы являются открытыми и поддерживают локальные развертывания, что соответствует вашим требованиям.
Не упустите возможность протестировать различные решения, чтобы найти наиболее подходящее для вашей конкретной среды разработки.