Настройка CI/CD пайплайна на TeamCity: Kotlin DSL, шаблоны и деплой

Ручные деплои и долгие сборки тормозят выход релизов и отнимают время разработчиков. Мы настраиваем CI/CD пайплайны на TeamCity с использованием Kotlin DSL и шаблонов, автоматизируя весь процесс от сборки до деплоя. Наша команда реализует проект под ключ — от аудита и установки сервера до документации и последующей поддержки, обеспечивая стабильную и быструю доставку изменений.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка CI/CD пайплайна на TeamCity: Kotlin DSL, шаблоны и деплой
Средний
~2-3 дня
Часто задаваемые вопросы

Представьте: интернет-магазин на Node.js с тремя окружениями (dev, staging, production). Каждая сборка — с нуля, зависимости тянутся из npm без кэша, тесты прогоняются последовательно. На деплой уходило 40 минут, а откат — ручной перезалив архива по SSH. После аудита мы настроили TeamCity: параллельные шаги, кэширование node_modules, автоматические тесты в контейнерах. Время сборки упало до 8 минут — в 5 раз быстрее. Разработчики перестали ждать, а релизы стали выходить каждый день. Такая экономия времени напрямую снижает TCO и ускоряет выход фич в прод. Наша команда с 10-летним опытом настроит CI/CD под ключ: от установки сервера до документации.

Типичные технические сложности

N+1 запрос в тестах — TeamCity собирает отчёты о покрытии и находит узкие места на этапе CI. Грязные окружения — каждый билд на чистом Docker-агенте, конфликты исключены. Долгие сборки — параллельные шаги и кэширование зависимостей (npm cache, Maven local) сокращают время до 70%. Для типового Node.js проекта сборка с кэшем занимает 2-3 минуты вместо 10. Среднее время восстановления после сбоя сокращается до 15 минут благодаря автоматическим откатам.

Настройка пайплайна: Kotlin DSL и шаги

Используем Kotlin DSL — конфигурация как код, версионируется в Git и проходит code review. TeamCity поддерживает сложные пайплайны с параллельными шагами. Ниже — типовой пайплайн для Node.js приложения:

// .teamcity/settings.kts
import jetbrains.buildServer.configs.kotlin.*
import jetbrains.buildServer.configs.kotlin.buildSteps.*
import jetbrains.buildServer.configs.kotlin.triggers.*

version = "latest"

project {
    buildType(Build)
    buildType(Test)
    buildType(Deploy)
    buildTypesOrder = arrayListOf(Build, Test, Deploy)
}

object Build : BuildType({
    name = "Build"
    vcs {
        root(DslContext.settingsRoot)
    }
    steps {
        nodeJS {
            shellScript = "npm ci && npm run build"
        }
    }
    artifactRules = "dist/** => dist.zip"
})

object Test : BuildType({
    name = "Test"
    dependencies {
        snapshot(Build) {}
    }
    steps {
        script {
            scriptContent = """
                npm ci
                npm test -- --coverage --ci
            """.trimIndent()
        }
    }
    failureConditions {
        testFailure = true
        errorMessage = true
    }
})

object Deploy : BuildType({
    name = "Deploy to Production"
    type = Type.DEPLOYMENT
    dependencies {
        snapshot(Test) {}
        artifacts(Build) {
            artifactRules = "dist.zip => ."
        }
    }
    params {
        param("deploy.env", "production")
    }
    steps {
        script {
            scriptContent = """
                unzip dist.zip -d /var/www/app/
                sudo systemctl reload nginx
            """.trimIndent()
        }
    }
    triggers {
        vcs {
            branchFilter = "+:refs/heads/main"
        }
    }
})

Деплой через SSH

Для PHP-проектов (Laravel, Symfony) добавили SSH-шаг:

sshExec {
    commands = """
        cd /var/www/app
        git pull origin main
        composer install --no-dev --optimize-autoloader
        php artisan migrate --force
        php artisan config:cache
        php artisan route:cache
        php artisan view:cache
        sudo systemctl reload php8.3-fpm
    """.trimIndent()
    targetUrl = "deploy-server.example.com"
    authMethod = uploadedKey {
        username = "deploy"
        key = "deploy_key"
    }
}

Docker-сборка в TeamCity

Контейнеризация унифицирует окружение и избавляет от ошибок «на моей машине работает».

steps {
  dockerCommand {
    commandType = build {
      source = file {
        path = "Dockerfile"
      }
      namesAndTags = "registry.example.com/myapp:%build.counter%"
      commandArgs = "--no-cache"
    }
  }
  dockerCommand {
    commandType = push {
      namesAndTags = "registry.example.com/myapp:%build.counter%"
    }
  }
}

Параметры и шаблоны

Многоокруженные проекты (staging, production) настраиваем через шаблоны. Один шаблон — три окружения, минимум кода.

template("DeployTemplate") {
    params {
        param("env.name", "")
        param("env.url", "")
        param("ssh.host", "")
    }
    steps {
        script {
            scriptContent = "deploy.sh %env.name% %env.url%"
        }
    }
}

object DeployStaging : BuildType({
    templates(DeployTemplate)
    params {
        param("env.name", "staging")
        param("env.url", "https://staging.example.com")
        param("ssh.host", "staging.server.com")
    }
})

Почему TeamCity выигрывает у Jenkins?

TeamCity быстрее при параллельных сборках — в два раза, благодаря встроенному артефакто-хранилищу и умному планировщику. Kotlin DSL даёт типизацию и автодополнение в IDE, тогда как Jenkins Pipeline — Groovy с динамической типизацией, что часто ведёт к ошибкам рантайма. Нативные шаблоны и параметры окружений TeamCity упрощают масштабирование на десятки проектов. Для наглядности:

Критерий TeamCity Jenkins
Конфигурация Kotlin DSL (статическая типизация) Groovy (динамическая)
Параллельные сборки Встроенный планировщик, быстрее в 2 раза Требует настройки
Шаблоны окружений Нативные параметры и шаблоны Через библиотеки
Артефакты Встроенное хранилище Плагин

Закажите настройку TeamCity — получите готовый пайплайн с документацией за 5-7 дней.

Как развернуть деплой на несколько окружений?

Используем шаблоны с параметрами: env.name, env.url, ssh.host. Каждое окружение — отдельный build type с привязкой к шаблону. VCS triggers на main запускают автоматический деплой на staging; production — только вручную через UI. Это исключает случайный деплой на прод.

Типичные ошибки при настройке CI/CD
  • Игнорирование artifactRules — артефакты не попадают в следующий билд, деплой ломается
  • Отсутствие изоляции агентов — библиотеки конфликтуют, тесты падают непредсказуемо
  • Хардкод credentials — ключи в коде, утечка безопасности. Используем параметры TeamCity и хранилище паролей
  • Слишком длинные пайплайны — все шаги в одном билде, нет параллелизации. Делим на Build → Test → Deploy
  • Нет уведомлений — команда узнаёт о падении сборки через несколько часов

Какие проекты требуют автоматизации CI/CD?

Любой проект, где релизы чаще раза в месяц, а деплой делают вручную. Особенно если в команде больше двух разработчиков. TeamCity окупается за счёт сокращения времени на сборку и исключения человеческих ошибок. Наши клиенты — от финтех-стартапов до enterprise-порталов — экономят от 10 до 40 часов в месяц на операциях деплоя.

Что входит в работу

  • Аудит текущего процесса сборки и деплоя (1 день)
  • Установка сервера и агентов TeamCity (Docker или bare metal) — 1 день
  • Настройка VCS triggers, сборки, тестов и артефактов
  • Шаблоны для окружений (dev/staging/production)
  • Уведомления о статусе сборок (Slack, email)
  • Тестирование пайплайна и исправление ошибок
  • Документация и обучение вашей команды
  • Гарантия работоспособности в течение месяца после сдачи

Сроки и стоимость

Стоимость рассчитывается индивидуально после анализа проекта. Ориентировочные сроки:

Компонент Время
Установка и базовая конфигурация 1 день
Kotlin DSL и шаблоны 1–2 дня
Интеграция с VCS и тестами 1 день
Деплой на окружения 1–2 дня
Уведомления и документация 1 день

Получите консультацию по настройке TeamCity под ваш проект. Свяжитесь с нами — мы поможем автоматизировать деплой без головной боли. Также вы можете запросить чек-лист по настройке CI/CD.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060