Skip to main content
Glama

Radius MCP Server

by inite-ai
CI_CD_README.md9.56 kB
# CI/CD Pipeline для Radius MCP Server Этот документ описывает настройку и использование CI/CD пайплайна для автоматической сборки, тестирования и развертывания Radius MCP Server. ## 🚀 Быстрый старт ### Локальная разработка ```bash # Установка зависимостей npm install # Запуск тестов npm run test # Запуск всех проверок npm run test:all # Проверка качества кода npm run quality:check ``` ### Деплой ```bash # Деплой в dev ./deploy.sh -e dev # Деплой в testing ./deploy.sh -e testing # Деплой в production ./deploy.sh -e prod20 ``` ## 📋 Доступные скрипты ### Тестирование - `npm run test` - Запуск всех тестов - `npm run test:unit` - Unit тесты - `npm run test:smoke` - Smoke тесты - `npm run test:coverage` - Покрытие кода - `npm run test:integration` - Интеграционные тесты ### Качество кода - `npm run lint` - ESLint проверки - `npm run lint:fix` - Автоисправление ESLint - `npm run format` - Prettier форматирование - `npm run format:check` - Проверка форматирования - `npm run quality:check` - Комплексная проверка качества ### Сборка и деплой - `npm run build` - Сборка проекта - `npm run start` - Запуск в production - `npm run dev` - Запуск в development - `npm run ci:test` - Полный CI тест - `npm run release` - Создание релиза ## 🏗️ Архитектура CI/CD ### Этапы пайплайна 1. **Prebuild** - Сборка Docker образа 2. **UnitTestBack** - Unit тесты и линтинг 3. **CheckApproves** - Проверка апрувов MR 4. **Converge** - Деплой в Kubernetes 5. **E2ETest** - End-to-end тесты 6. **Integration Test** - Интеграционные тесты 7. **Cleanup** - Очистка старых образов ### Окружения | Окружение | Ветка | URL | Реплики | Ресурсы | |-----------|-------|-----|---------|---------| | **dev** | `develop` | https://radius-mcp-server-dev.myradius.ru | 1 | 500m CPU, 512Mi RAM | | **testing** | `testing` | https://radius-mcp-server-testing.myradius.ru | 2 | 1000m CPU, 1Gi RAM | | **production** | `prod20` | https://radius-mcp-server.myradius.ru | 3 | 2000m CPU, 2Gi RAM | ## 🔧 Настройка ### Переменные GitLab CI/CD Настройте в Settings → CI/CD → Variables: ```bash # Werf и Registry WERF_REPO=registry-yc.myradius.ru/radius-mcp-server BUILDS_REGISTRY_URL=registry-yc.myradius.ru WERF_IMAGES_CLEANUP_PASSWORD=your-cleanup-password # MR Approvals GITLAB_TOKEN_FOR_CI=your-gitlab-token APPROVAL_AUTHORS=user1,user2,user3 # Application Secrets EMPLOYEE_API_KEY=your-employee-api-key EMPLOYEE_API_BASE_URL=https://api.myradius.ru CALENDAR_API_KEY=your-calendar-api-key CALENDAR_API_HOST_URL=https://calendar.myradius.ru ``` ### Локальная настройка 1. **Установите зависимости:** ```bash npm install ``` 2. **Настройте переменные окружения:** ```bash cp .env.example .env # Отредактируйте .env файл ``` 3. **Проверьте настройки:** ```bash npm run quality:check ``` ## 🧪 Тестирование ### Unit тесты ```bash # Запуск всех unit тестов npm run test:unit # Запуск с покрытием npm run test:coverage # Запуск в watch режиме npm run test:watch ``` ### Smoke тесты ```bash # Быстрые smoke тесты npm run test:smoke ``` ### Интеграционные тесты ```bash # Тестирование dev окружения ./ci-integration-test.sh -e dev # Тестирование с кастомным URL ./ci-integration-test.sh -e testing -u https://custom-url.com ``` ### Качество кода ```bash # Комплексная проверка npm run quality:check # Только линтинг npm run lint # Только форматирование npm run format:check ``` ## 🚀 Деплой ### Автоматический деплой Деплой происходит автоматически при пуше в соответствующие ветки: - **develop** → dev окружение - **testing** → testing окружение - **prod20** → production окружение ### Ручной деплой ```bash # Деплой в dev ./deploy.sh -e dev # Деплой в testing с dry-run ./deploy.sh -e testing -d # Принудительный деплой в production ./deploy.sh -e prod20 -f ``` ### Мониторинг деплоя ```bash # Мониторинг dev деплоя ./monitor-deployment.sh -e dev # Мониторинг с кастомным таймаутом ./monitor-deployment.sh -e testing -t 600 ``` ## 📊 Мониторинг ### Health Checks - **Liveness probe:** `GET /mcp` каждые 10 сек - **Readiness probe:** `GET /mcp` каждые 5 сек ### Логи ```bash # Логи приложения kubectl logs -f deployment/radius-mcp-server -n $NAMESPACE # Логи werf werf logs --env $ENV ``` ### Метрики ```bash # Статус подов kubectl get pods -n $NAMESPACE # Статус сервисов kubectl get services -n $NAMESPACE # Статус ingress kubectl get ingress -n $NAMESPACE ``` ## 🔄 Workflow ### 1. Разработка ```bash # Создание фича ветки git checkout -b task-1234/feat/employee-management # Разработка npm run dev # Тестирование npm run test:all ``` ### 2. Code Review ```bash # Создание MR в GitLab # Автоматически запускается: # - Prebuild # - UnitTestBack # - Check MR Approves ``` ### 3. Деплой в dev ```bash # Мерж в develop git checkout develop git merge task-1234/feat/employee-management git push origin develop # Автоматический деплой в dev ``` ### 4. Деплой в testing ```bash # Мерж в testing git checkout testing git merge develop git push origin testing # Автоматический деплой в testing ``` ### 5. Деплой в production ```bash # Мерж в prod20 git checkout prod20 git merge testing git push origin prod20 # Автоматический деплой в production ``` ## 🏷️ Релизы ### Создание релиза ```bash # Создание релиза v1.0.0 npm run release -v 1.0.0 # Dry run npm run release -v 1.0.0 -d # Без пуша в remote npm run release -v 1.0.0 --no-push ``` ### Версионирование Используется [Semantic Versioning](https://semver.org/): - **MAJOR** - Breaking changes - **MINOR** - New features (backward compatible) - **PATCH** - Bug fixes (backward compatible) ## 🛠️ Устранение неполадок ### Ошибка формата ветки ```bash Error: Неверный формат ветки ``` **Решение:** Используйте допустимые форматы: - `task-XXXX/feat/описание` - `task-XXXX/fix/описание` - `develop`, `testing`, `prod20` ### Ошибка тестов ```bash npm run test failed ``` **Решение:** ```bash # Проверить зависимости npm ci # Запустить тесты с подробным выводом npm run test -- --verbose # Проверить покрытие npm run test:coverage ``` ### Ошибка деплоя ```bash werf converge failed ``` **Решение:** ```bash # Проверить состояние кластера kubectl get pods -n $NAMESPACE # Проверить логи werf werf logs --env $ENV # Проверить values файлы cat .helm/values.$ENV.yaml ``` ### Ошибка интеграционных тестов ```bash Integration tests failed ``` **Решение:** ```bash # Проверить доступность сервиса curl -I https://your-service-url/mcp # Проверить с port-forward kubectl port-forward -n $NAMESPACE service/radius-mcp-server 8080:3000 curl -I http://localhost:8080/mcp ``` ## 📚 Дополнительные ресурсы - [GitLab CI/CD Documentation](https://docs.gitlab.com/ee/ci/) - [Werf Documentation](https://werf.io/) - [Kubernetes Documentation](https://kubernetes.io/docs/) - [Jest Testing Framework](https://jestjs.io/) - [ESLint Documentation](https://eslint.org/) ## 🤝 Поддержка При возникновении проблем: 1. Проверьте логи CI/CD пайплайна 2. Запустите тесты локально 3. Проверьте конфигурацию окружения 4. Обратитесь к команде разработки --- **Последнее обновление:** $(date +%Y-%m-%d)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/inite-ai/radius-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server