Spec-Zone.ru › Kotlin 2

Настройка TeamCity для приложения Kotlin Multiplatform

В этой статье объясняется, как настроить TeamCity для сборки, тестирования и развертывания приложений KMP. TeamCity поддерживает все основные поставщики VCS (GitHub, GitLab, Bitbucket, Azure DevOps, Perforce и другие), позволяет создавать гибридные рабочие процессы с высокой масштабируемостью, используя локальные и облачные агенты, а также включает мощные функции: многоузловые конфигурации для обеспечения высокой доступности, расширенное управление пользователями, интеграцию с системами отслеживания задач и ИИ-ассистента.

Попробуйте бесплатную пробную версию TeamCity: выберите Cloud с предварительно настроенными агентами, размещенными JetBrains, и основными инструментами сборки и SDK или TeamCity On-Premises для максимального контроля и бесплатной бессрочной лицензии Professional.

В основе этого руководства — пример JetCaster KMP.

Создание проекта

Любой рабочий процесс TeamCity начинается с проекта. Проекты содержат такие сущности, как конфигурации сборки и конвейеры, которые выполняют собственно процедуры CI/CD, хранят облачные профили для запуска облачных агентов, предоставляют дочерним объектам общие параметры и многое другое.

Дополнительные сведения см. в статьях документации TeamCity:

  • Руководство администратора проекта

  • Создание и редактирование проектов

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

  2. Укажите название проекта и при желании добавьте описание.

  3. После нажатия Создать TeamCity предложит выбрать тип объекта, который будет выполнять задачи сборки: конфигурацию сборки или конвейер.

    Choose configurations or pipelines
    Конфигурация сборки

    Поддерживает весь набор функций TeamCity, позволяет хранить настройки конфигурации в виде кода Kotlin DSL и предлагает широкие возможности настройки. Однако для работы с ней может потребоваться больше опыта и ручной настройки.

    Подробнее: Создание и редактирование конфигураций сборки.

    Конвейер

    Предлагает интуитивно понятный интерфейс с визуальным редактором, редактируемыми конфигурациями YAML и удобным доступом к настройкам. Конвейеры предназначены для пользователей с небольшим опытом и более простых рабочих процессов. Конвейеры появились в TeamCity 2025.11; на данный момент в них отсутствуют некоторые функции, доступные в конфигурациях сборки.

    Подробнее: Создание и редактирование конвейеров.

    Для этого руководства выберите конвейеры: их проще настроить, и они поддерживают все функции, необходимые для сборки и тестирования нашего примера проекта.

  4. Выберите Подключить новый репозиторий, а затем GitHub, чтобы создать постоянное подключение к GitHub, которое можно повторно использовать в будущих проектах, или Любой URL Git для временного подключения к определенному репозиторию (примеру приложения JetCaster или вашей личной копии репозитория).

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

    Basic pipeline settings

    Оставьте настройки по умолчанию, чтобы конвейер отслеживал все ветки репозитория, использовал main в качестве ветки по умолчанию и автоматически запускался при каждом коммите изменений в репозитории.

Добавление заданий в конвейер

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

Main client area

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

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

Общие настройки конвейера

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

  • Автозапуск конвейеров — позволяет настроить автоматический запуск конвейера при каждом коммите изменений в удаленный репозиторий (включено по умолчанию), при открытии запроса на слияние для репозитория или по заданному расписанию.

  • Репозиторий — позволяет извлекать и обрабатывать несколько репозиториев из разных хостингов VCS.

  • Интеграции — позволяет подключать внешние реестры NPM и Docker. Обратите внимание: если вы планируете выполнять шаги сборки в общедоступных образах Docker Hub, настраивать соответствующую интеграцию не нужно, если только конвейер не запускается настолько часто, что превышает ограничения Docker Hub на анонимную загрузку образов.

Настройки агентов

Задачи сборки обрабатываются агентами сборки, установленными на физических или облачных машинах. На этих машинах должны быть установлены все инструменты, необходимые для выполнения заданных задач сборки. Например, для задания 2 в этом конвейере требуется Android SDK, а в задании 3 используется Xcode для сборки версии приложения для iOS.

  • В TeamCity Cloud используются агенты, размещенные JetBrains и оснащенные широким набором инструментов сборки. Для этого руководства подключать дополнительные агенты не нужно.

  • Если вы используете TeamCity On-Premises, убедитесь, что каждое задание может выполняться как минимум на одном агенте. Подробнее см. в статье Установка и запуск агентов TeamCity.

В этом руководстве в заданиях указаны требования к агентам, чтобы гарантировать их назначение только агентам с необходимыми установленными инструментами.

Запуск общих тестов

Переключитесь на редактор конвейера YAML и вставьте следующую разметку, чтобы настроить первое задание:

jobs:
  Job1:
    name: Run tests
    steps:
      - type: gradle
        use-gradle-wrapper: true
        name: Gradle test
        jdk-home: '%env.JDK_17_0%'
        tasks: jvmTest
    files-publication:
      - path: '**/build/reports/tests/**/*'
        share-with-jobs: false
        publish-artifact: true
    allow-reuse: false

Это задание запускает задачу Gradle jvmTest с использованием Java 17. Оно собирает все файлы, пути которых соответствуют .../build/reports/tests/..., помещает их в папку test-reports и публикует эту папку как артефакт.

Также можно включить параметр задания Оптимизации | Параллельное тестирование, чтобы разделить набор тестов на более мелкие группы и обрабатывать каждую группу на отдельном агенте сборки. Это может значительно сократить общее время выполнения, но потребует больше ресурсов. Чтобы включить параллельное тестирование, измените YAML конвейера, добавив параметр parallelism, как показано ниже:

    ...
    allow-reuse: false
    parallelism: 3

Параметр оптимизации Разрешить повторное использование определяет, следует ли TeamCity пропускать повторный запуск задач, если конфигурация конвейера или исходный код не изменились.

Дополнительные сведения см. в статьях Настройки задания и Шаг сборки Gradle.

Сборка отладочного пакета Android

Измените YAML конвейера следующим образом:

jobs:
  Job1:
    name: Run tests
    ...
    Job2:
      name: Build Android
      steps:
        - type: gradle
          jdk-home: '%env.JDK_17_0%'
          tasks: ':mobile:assembleDebug'
          use-gradle-wrapper: true
      files-publication:
        - path: mobile/build/outputs/apk/debug/*.apk
          share-with-jobs: false
          publish-artifact: true
      runs-on:
        self-hosted:
          - requirement: exists
            name: Android home
            parameter: env.ANDROID_HOME
      dependencies:
        - Job1
  • Блок requirement гарантирует, что это задание будет назначено только агентам с установленным Android SDK.

  • Раздел dependencies гарантирует, что это задание начнется только после успешного завершения Job1.

Сборка приложения для симулятора iOS

На последнем шаге добавьте в YAML конвейера следующую разметку:

jobs:
  Job1:
    ...
  Job2:
    ...
  Job3:
    name: Build iOS
    steps:
      - type: script
        script-content: |-
          xcodebuild build \
            -project JetcasterMigration/JetcasterMigration.xcodeproj \
            -configuration Debug \
            -scheme JetcasterMigration \
            -sdk iphonesimulator \
            -derivedDataPath ./build \
            -verbose
    files-publication:
      - path: build/Build/Products/Debug-iphonesimulator/**/*
        share-with-jobs: false
        publish-artifact: true
    dependencies:
      - Job1

В отличие от первых двух заданий, Сборка iOS использует универсальный шаг сборки командной строки, который позволяет выполнять команды и работать с любыми инструментами, установленными на машине агента.

Раздел dependencies указывает зависимость от Job1. Это означает, что задания Сборка Android и Сборка iOS могут выполняться параллельно, но начнутся только после завершения процедуры тестирования из Job1.

При работе с конфигурациями сборки вместо шага сборки Script можно использовать специализированный шаг Xcode Project.

Запуск конвейера

Нажмите Сохранить и запустить в правом верхнем углу, чтобы запустить рабочий процесс. После завершения задания опубликованные им артефакты появятся на вкладке Артефакты рядом с журналом сборки.

TeamCity artifacts

В Job1 также появится вкладка Тесты, на которой можно просмотреть результаты тестирования.

TeamCity tests

Что дальше

Вы можете продолжить изменять этот пример, чтобы получить еще больше преимуществ:

  • Добавление конвейера с подключением VCS

    При добавлении нового конвейера в проект выберите GitHub вместо Любой URL Git. Такой подход позволяет не только пропустить настройку доступа к VCS для будущих проектов на GitHub, но и использовать дополнительные функции конвейеров:

    • TeamCity может публиковать статусы запусков (успешный, неудачный или выполняющийся) непосредственно в GitHub.

    • В параметрах триггера При появлении новых изменений и разделе Репозиторий появится переключатель Запросы на слияние, который позволяет отслеживать и собирать изменения, еще не зафиксированные в стабильной ветке.

  • Изучение расширенных конфигураций сборки

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

    • Используйте цепочки сборок и составные конфигурации, чтобы запускать отдельные части рабочего процесса. Например, запускайте Тестирование → Сборка iOS, не запуская Сборка Android, или запускайте только конфигурацию тестирования.

    • Используйте весь набор шагов сборки, разработанных JetBrains, рецепты сообщества и отдельно устанавливаемые шаги, например выпуски GitHub.

    • Разверните агенты в кластере Kubernetes или используйте Kubernetes как внешний исполнитель.

    • Настройте интеграции с системами отслеживания задач и хранилищами секретов.

13 апреля 2026 г.
Настройка GitHub Actions для непрерывной интеграции приложения Kotlin MultiplatformНастройка конвейера доставки iOS для проекта Kotlin Multiplatform

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/configure-teamcity-for-kmp.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API