Как стать автором
Обновить
1064.2
OTUS
Цифровые навыки от ведущих экспертов

Настраиваем CI с помощью Cake+TeamCity

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

Привет, Хабр! Меня зовут Рустем, являюсь Senior DevOps Engineer в IBM и сегодня я хотел бы показать вам один из способов билда C# приложения. Для этого нам понадобятся Cake+TeamCity для CI-процесса.

Сегодня мы настроим CI-процесс, то есть сборку нашего кода.

Теоретическое вступление: что нам нужно знать о нашем инструментарии.

Cake — это бесплатная кроссплатформенная система автоматизации сборки с открытым исходным кодом и C# DSL для таких задач, как компиляция кода, копирование файлов и папок, выполнение юнит-тестов, сжатие файлов и сборка пакетов NuGet.

TeamCity

TeamCity — это CI-сервер, который позволяет настраивать автоматическую сборку и тестирование нашего продукта

Основные понятия, которые нам необходимо знать в TC:

Build agent — часть программного обеспечения, которая фактически выполняет процесс сборки. Он устанавливается и настраивается отдельно от сервера TeamCity, то есть агент может быть установлен на отдельной машине (физической или виртуальной) и может работать под управлением той же операционной системы (ОС), что и сервер, или другой ОС. Также стоит отметить, что агент сборки не предоставляет сам механизмы сборки кода, а ищет эти самые механизмы из окружения сервера, на который он установлен, и затем задействует их в сборке.

TeamCity Server — сам сервер не выполняет ни сборки, ни тесты: задача сервера состоит в том, чтобы отслеживать все подключенные агенты сборки, распределять сборки в очереди на агенты на основе требований совместимости и сообщать о результатах.

Project — проект TeamCity соответствует программному проекту или конкретной версии/релизу программного проекта. Проект представляет собой набор конфигураций для сборки кода.

Build configuration — комбинация параметров, определяющая процедуру сборки. Настройки включают в себя VCS-root, этапы сборки, триггеры сборки.

VCS root — набор параметров управления версиями (пути к источникам, имя пользователя, пароль, режим чекаута и другие параметры), которые определяют, как TeamCity взаимодействует с системой управления версиями (SCM) для отслеживания изменений и получения исходников для сборки.

Build step — задача, которую нужно выполнить. Каждый шаг сборки представлен ранером сборки, обеспечивающим интеграцию с определенным инструментом сборки (например, Ant, Gradle, MSBuild и т. д.), средой тестирования (например, NUnit) или механизмом анализа кода. Таким образом, в одной сборке вы можете иметь несколько шагов и последовательно вызывать инструменты тестирования, покрытие кода и, например, компилировать свой проект.

Build — задание CI/CD, выполняемое на агенте. Состоит из одного или нескольких шагов сборки, которые могут выполнять любую задачу обслуживания: компилировать, тестировать, развертывать, писать логи и т. д.

Build artifacts — файлы, создаваемые процессом сборки, например установщики, бинарные файлы, файлы WAR, отчеты, файлы журналов, доступные для загрузки.

Практика

Начнем со сборки.

Вот команда разработчиков передала на свой код и теперь нужно настроить его автоматическую сборку.

Приложение у нас C#, значит, собирать будем с файла проекта с расширения .csproj



Запомним его расположение.

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

Скачать скрипт можно из https://github.com/cake-build/cake/blob/develop/build.ps1

Далее нам нужно создать папку в репозитории с основным кодом приложения и туда перенесем наши скрипты Cake.

Т.е. теперь у нас есть папка с основным скриптом и папка, где будут лежать скрипты сборки.

Сначала создаем файл paths.cake, где мы прописываем путь до нашего csproj файла.

Далее создаем скрипт с названием prepare.cake, где мы опишем шаги предподготовки к сборке: очистка директории и восстановление пакетов Nuget.

Следующим в очереди будет скрипт сборки build.cake.

Тут мы описываем наш Task, т.е. задание сборки и процесс и процесс пакинга наших артефактов в формат nupkg для доставки его в хранилище артефактов в Octopus.

Далее создадим файл targets.cake, который будет хранить в себе глобальные таски с содержанием всех тасков, которые мы писали и определением зависимостей между ними. Т.е. зависимый таск не запустится, пока выполнение таска от которого он зависит не завершится успехом.

И последний файл load.cake, который и будет вызывать все наши скрипты в порядке описанной очереди.

Отлично, теперь у нас все скрипты написаны и наша папка src содержит следующие файлы:

Осталось сконфигурировать CI-процесс в TeamCity. Для этого создадим проект в TC.

Переходим в Administration -> Project -> Create Project

Указываем наш репозиторий, а также логин и пароль нашего пользователя(в данный момент паролем является Personal Access Token, который можно получить в github -> Settings -> Developer Settings -> Personal Access Token)

Далее нам нужно создать конфигурацию сборки в нашем проекте.

Далее создаем шаги сборки.

Далее даем имя нашему шагу, раннером выбираем Powershell, в поле скрипт выбираем “File” и указываем путь до нашего build.ps1, также прописываем дополнительные аргументы к скрипту(запуск основного билд таска из нашего targets.cake файла).

Теперь можно протестировать наш CI — нажимаем ран и смотрим.

И… Сборка прошла успешно. Вы великолепны! Забираем артефакт.


Скоро в OTUS состоится открытое занятие «Docker образы. Микросервисы». На нем мы разберемся, как правильно писать Dockerfile; поговорим о том, что такое микросервисы и как они взаимодействуют между собой. Зарегистрироваться на занятие могут все желающие по ссылке.

Теги:
Хабы:
Всего голосов 8: ↑5 и ↓3+2
Комментарии1

Публикации

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS