Ответ
На проекте используется CI/CD пайплайн в Azure DevOps (YAML) с деплоем в облако Microsoft Azure. Процесс полностью автоматизирован.
Этапы пайплайна:
-
Сборка (Build):
- Восстановление зависимостей (
dotnet restore). - Компиляция решения в конфигурации Release (
dotnet build --configuration Release). - Запуск модульных и интеграционных тестов.
- task: DotNetCoreCLI@2
displayName: 'Run Tests'
inputs:
command: 'test'
projects: '*/.Tests.csproj'
arguments: '--configuration Release --collect:"XPlat Code Coverage"'
- Восстановление зависимостей (
-
Публикация артефактов:
- Создание готовых к развертыванию артефактов (
dotnet publish). - Публикация артефактов в пайплайн для последующих стадий.
- Создание готовых к развертыванию артефактов (
-
Развертывание (Release):
- Для веб-приложений (ASP.NET Core): Деплой в Azure App Service с использованием слотов развертывания (staging/production). Это позволяет выполнить предварительное тестирование и быстрый откат.
- Для сервисов: Деплой в Azure Kubernetes Service (AKS). Используется стратегия blue-green для минимизации простоя.
- Для баз данных: Автоматическое применение миграций Entity Framework Core через скрипты в пайплайне или инструменты вроде DbUp.
Дополнительные практики:
- Feature Flags: Новый функционал включается постепенно через конфигурацию (например, с помощью библиотеки
Microsoft.FeatureManagement). - Мониторинг: После деплоя ведется наблюдение через Application Insights (логи, метрики, производительность) и Azure Monitor.
- Откат (Rollback): В случае проблем выполняется переключение на предыдущий слот (App Service) или образ (AKS).