<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https://wiki.erp.kyiv.ua/index.php?action=history&amp;feed=atom&amp;title=TeamCity</id>
	<title>TeamCity - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.erp.kyiv.ua/index.php?action=history&amp;feed=atom&amp;title=TeamCity"/>
	<link rel="alternate" type="text/html" href="https://wiki.erp.kyiv.ua/index.php?title=TeamCity&amp;action=history"/>
	<updated>2026-09-09T03:22:29Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.erp.kyiv.ua/index.php?title=TeamCity&amp;diff=1158&amp;oldid=prev</id>
		<title>R: Первинна публікація</title>
		<link rel="alternate" type="text/html" href="https://wiki.erp.kyiv.ua/index.php?title=TeamCity&amp;diff=1158&amp;oldid=prev"/>
		<updated>2026-05-08T10:17:58Z</updated>

		<summary type="html">&lt;p&gt;Первинна публікація&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;TeamCity&amp;#039;&amp;#039;&amp;#039; — це CI/CD-сервер від компанії &amp;#039;&amp;#039;&amp;#039;JetBrains&amp;#039;&amp;#039;&amp;#039;, який використовується для автоматизації збірки, тестування, перевірки якості коду, публікації артефактів і розгортання програмного забезпечення.&lt;br /&gt;
&lt;br /&gt;
TeamCity застосовується у Java, .NET, Kotlin, JavaScript, Python, Android, Docker, мікросервісних, backend, frontend, mobile, SaaS та корпоративних проєктах. JetBrains описує TeamCity як CI/CD-сервер, а його build-система складається із сервера та build agents. ([jetbrains.com](https://www.jetbrains.com/help/teamcity/continuous-integration-with-teamcity.html))&amp;lt;div style=&amp;quot;background:#e8f4ff; border-left:5px solid #1e88e5; padding:12px; margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Важливо:&amp;#039;&amp;#039;&amp;#039; TeamCity — це не IDE і не система контролю версій. Це сервер автоматизації CI/CD, який отримує код із Git або іншої VCS, запускає збірку, тести, перевірки, створює артефакти та може виконувати deployment.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Загальний опис ==&lt;br /&gt;
TeamCity допомагає командам автоматизувати процес розробки. Коли розробник надсилає зміни в репозиторій, TeamCity може автоматично запустити збірку, виконати тести, перевірити код, створити артефакт і повідомити команду про результат.&lt;br /&gt;
&lt;br /&gt;
У типовому процесі TeamCity підключається до репозиторію коду, наприклад Git, GitHub, GitLab, Bitbucket або іншої системи контролю версій. Після появи нових змін CI/CD-сервер запускає потрібні build configurations на build agents.&lt;br /&gt;
&lt;br /&gt;
JetBrains у документації описує TeamCity як CI/CD-сервер, який підтримує continuous integration і continuous delivery. Continuous Integration означає, що зміни коду регулярно потрапляють у спільний репозиторій, після чого автоматично запускається збірка для раннього виявлення проблем. ([jetbrains.com](https://www.jetbrains.com/help/teamcity/continuous-integration-with-teamcity.html))&amp;lt;div style=&amp;quot;background:#fff8e1; border-left:5px solid #f9a825; padding:12px; margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Зверніть увагу:&amp;#039;&amp;#039;&amp;#039; TeamCity сам не пише код і не виправляє помилки. Він автоматизує перевірку, збірку, тестування, публікацію і розгортання, щоб команда швидше бачила, чи працюють зміни.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Для чого потрібен TeamCity ==&lt;br /&gt;
TeamCity потрібен для автоматизації процесів розробки та доставки програмного забезпечення.&lt;br /&gt;
&lt;br /&gt;
Основні задачі TeamCity:&lt;br /&gt;
&lt;br /&gt;
* автоматичний запуск збірки після змін у репозиторії;&lt;br /&gt;
* компіляція коду;&lt;br /&gt;
* запуск unit-тестів;&lt;br /&gt;
* запуск інтеграційних тестів;&lt;br /&gt;
* запуск статичного аналізу;&lt;br /&gt;
* перевірка якості коду;&lt;br /&gt;
* створення артефактів;&lt;br /&gt;
* публікація артефактів;&lt;br /&gt;
* збірка Docker-образів;&lt;br /&gt;
* запуск deployment;&lt;br /&gt;
* контроль build history;&lt;br /&gt;
* повідомлення про помилки;&lt;br /&gt;
* контроль прав доступу;&lt;br /&gt;
* робота з build chains;&lt;br /&gt;
* автоматизація CI/CD-процесів.&lt;br /&gt;
&lt;br /&gt;
== Основні поняття TeamCity ==&lt;br /&gt;
&lt;br /&gt;
=== TeamCity Server ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TeamCity Server&amp;#039;&amp;#039;&amp;#039; — це центральний сервер, який керує проєктами, build configurations, користувачами, правами доступу, історією збірок, артефактами, налаштуваннями, тригерами та результатами виконання.&lt;br /&gt;
&lt;br /&gt;
Сервер координує роботу build agents, але сам зазвичай не виконує важкі build-задачі.&lt;br /&gt;
&lt;br /&gt;
=== Build Agent ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Build Agent&amp;#039;&amp;#039;&amp;#039; — це окремий процес або машина, яка фактично виконує збірку. Саме build agent компілює код, запускає тести, виконує Gradle, Maven, npm, Docker, .NET CLI або інші команди.&lt;br /&gt;
&lt;br /&gt;
У документації JetBrains зазначено, що build agent — це програмне забезпечення, яке виконує build process і встановлюється окремо від TeamCity Server. ([jetbrains.com](https://www.jetbrains.com/help/teamcity/continuous-integration-with-teamcity.html))&lt;br /&gt;
&lt;br /&gt;
=== Project ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Project&amp;#039;&amp;#039;&amp;#039; у TeamCity — це логічна група build configurations, налаштувань, шаблонів і параметрів. Один проєкт може відповідати одному програмному продукту, репозиторію, модулю або команді.&lt;br /&gt;
&lt;br /&gt;
=== Build Configuration ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Build Configuration&amp;#039;&amp;#039;&amp;#039; — це опис конкретної збірки. У ньому задається, звідки брати код, які кроки виконувати, які тести запускати, які артефакти зберігати і коли запускати build.&lt;br /&gt;
&lt;br /&gt;
=== Build Step ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Build Step&amp;#039;&amp;#039;&amp;#039; — це окремий крок у build configuration.&lt;br /&gt;
&lt;br /&gt;
Приклади build steps:&lt;br /&gt;
&lt;br /&gt;
* Gradle build;&lt;br /&gt;
* Maven build;&lt;br /&gt;
* npm install;&lt;br /&gt;
* npm test;&lt;br /&gt;
* dotnet build;&lt;br /&gt;
* dotnet test;&lt;br /&gt;
* Docker build;&lt;br /&gt;
* запуск shell-скрипта;&lt;br /&gt;
* запуск PowerShell-скрипта;&lt;br /&gt;
* публікація артефактів.&lt;br /&gt;
&lt;br /&gt;
=== VCS Root ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;VCS Root&amp;#039;&amp;#039;&amp;#039; — це налаштування підключення до репозиторію коду. Через VCS Root TeamCity знає, де знаходиться код, яку гілку брати, які облікові дані використовувати і які зміни відстежувати.&amp;lt;div style=&amp;quot;background:#e8f5e9; border-left:5px solid #43a047; padding:12px; margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Практичне застосування:&amp;#039;&amp;#039;&amp;#039; TeamCity дозволяє побудувати процес, у якому кожен commit автоматично перевіряється збіркою і тестами. Це допомагає швидше виявляти помилки та не переносити проблеми в production.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CI/CD у TeamCity ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CI/CD&amp;#039;&amp;#039;&amp;#039; означає &amp;#039;&amp;#039;&amp;#039;Continuous Integration&amp;#039;&amp;#039;&amp;#039; і &amp;#039;&amp;#039;&amp;#039;Continuous Delivery&amp;#039;&amp;#039;&amp;#039; або &amp;#039;&amp;#039;&amp;#039;Continuous Deployment&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
У TeamCity CI/CD може включати:&lt;br /&gt;
&lt;br /&gt;
* отримання коду з репозиторію;&lt;br /&gt;
* автоматичний запуск build після commit;&lt;br /&gt;
* компіляцію;&lt;br /&gt;
* запуск тестів;&lt;br /&gt;
* статичний аналіз;&lt;br /&gt;
* створення артефактів;&lt;br /&gt;
* публікацію Docker-образів;&lt;br /&gt;
* deployment у тестове середовище;&lt;br /&gt;
* ручне підтвердження перед production;&lt;br /&gt;
* автоматичне розгортання за умовами.&lt;br /&gt;
&lt;br /&gt;
JetBrains у власному CI/CD-гайді пояснює, що CI-сервер координує кроки CI/CD-процесу: від відстеження змін у VCS до запуску build, test і deployment-задач. ([jetbrains.com](https://www.jetbrains.com/teamcity/ci-cd-guide/ci-servers/))&lt;br /&gt;
&lt;br /&gt;
== Build chain ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Build chain&amp;#039;&amp;#039;&amp;#039; — це ланцюг взаємопов’язаних збірок. Він використовується, коли одна збірка залежить від результату іншої.&lt;br /&gt;
&lt;br /&gt;
Приклад build chain:&lt;br /&gt;
&lt;br /&gt;
# Збірка backend.&lt;br /&gt;
# Запуск backend-тестів.&lt;br /&gt;
# Збірка frontend.&lt;br /&gt;
# Запуск frontend-тестів.&lt;br /&gt;
# Створення Docker-образу.&lt;br /&gt;
# Deployment у staging.&lt;br /&gt;
# Автоматичні smoke-тести.&lt;br /&gt;
# Ручне підтвердження production deployment.&lt;br /&gt;
&lt;br /&gt;
Build chain дозволяє бачити весь процес як єдиний pipeline і швидко визначати, на якому етапі сталася помилка.&lt;br /&gt;
&lt;br /&gt;
== Build triggers ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Build Trigger&amp;#039;&amp;#039;&amp;#039; визначає, коли запускати збірку.&lt;br /&gt;
&lt;br /&gt;
Типові тригери:&lt;br /&gt;
&lt;br /&gt;
* запуск після commit у Git;&lt;br /&gt;
* запуск за розкладом;&lt;br /&gt;
* запуск після завершення іншої збірки;&lt;br /&gt;
* ручний запуск користувачем;&lt;br /&gt;
* запуск за тегом;&lt;br /&gt;
* запуск для pull request або merge request;&lt;br /&gt;
* запуск при зміні конкретної гілки;&lt;br /&gt;
* запуск при зміні певних файлів.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#e0f2f1; border-left:5px solid #00897b; padding:12px; margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Для команди розробки:&amp;#039;&amp;#039;&amp;#039; найчастіше TeamCity налаштовують так, щоб build запускався автоматично після змін у репозиторії. Це дає швидкий зворотний зв’язок розробникам.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build runners ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Build Runner&amp;#039;&amp;#039;&amp;#039; — це тип build step, який виконує конкретну технологічну задачу.&lt;br /&gt;
&lt;br /&gt;
TeamCity може використовувати різні build runners:&lt;br /&gt;
&lt;br /&gt;
* Gradle;&lt;br /&gt;
* Maven;&lt;br /&gt;
* Ant;&lt;br /&gt;
* .NET;&lt;br /&gt;
* command line;&lt;br /&gt;
* PowerShell;&lt;br /&gt;
* Docker;&lt;br /&gt;
* npm;&lt;br /&gt;
* Python;&lt;br /&gt;
* тестові runner-и;&lt;br /&gt;
* deployment runner-и;&lt;br /&gt;
* власні скрипти.&lt;br /&gt;
&lt;br /&gt;
Для Java-проєкту, наприклад, build runner може запускати:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./gradlew clean build&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Для .NET-проєкту:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dotnet test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Артефакти збірки ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Build artifacts&amp;#039;&amp;#039;&amp;#039; — це файли, які створюються після успішної збірки.&lt;br /&gt;
&lt;br /&gt;
Приклади артефактів:&lt;br /&gt;
&lt;br /&gt;
* JAR-файл;&lt;br /&gt;
* WAR-файл;&lt;br /&gt;
* ZIP-архів;&lt;br /&gt;
* Docker image;&lt;br /&gt;
* NuGet-пакет;&lt;br /&gt;
* npm package;&lt;br /&gt;
* звіти тестів;&lt;br /&gt;
* coverage report;&lt;br /&gt;
* лог-файли;&lt;br /&gt;
* інсталяційний пакет;&lt;br /&gt;
* зібраний frontend.&lt;br /&gt;
&lt;br /&gt;
TeamCity може зберігати артефакти, передавати їх у наступні build configurations або публікувати в зовнішній registry.&lt;br /&gt;
&lt;br /&gt;
== Configuration as Code ==&lt;br /&gt;
TeamCity підтримує підхід &amp;#039;&amp;#039;&amp;#039;Configuration as Code&amp;#039;&amp;#039;&amp;#039;. Це означає, що налаштування build configurations можна зберігати у вигляді коду в репозиторії.&lt;br /&gt;
&lt;br /&gt;
JetBrains серед можливостей TeamCity окремо вказує configuration as code, customization and extensibility, metrics and insights, CI, test automation, security and compliance. ([jetbrains.com](https://www.jetbrains.com/teamcity/features/))&lt;br /&gt;
&lt;br /&gt;
Переваги Configuration as Code:&lt;br /&gt;
&lt;br /&gt;
* налаштування зберігаються в Git;&lt;br /&gt;
* зміни можна переглядати через code review;&lt;br /&gt;
* простіше відновити конфігурацію;&lt;br /&gt;
* простіше копіювати pipeline між проєктами;&lt;br /&gt;
* можна відстежувати історію змін;&lt;br /&gt;
* менше ручних змін через інтерфейс.&lt;br /&gt;
&lt;br /&gt;
== Kotlin DSL ==&lt;br /&gt;
TeamCity може використовувати &amp;#039;&amp;#039;&amp;#039;Kotlin DSL&amp;#039;&amp;#039;&amp;#039; для опису build configurations як коду. Це зручно для команд, які працюють з Kotlin або Java-екосистемою.&lt;br /&gt;
&lt;br /&gt;
Приклад спрощеної ідеї Kotlin DSL:&amp;lt;syntaxhighlight lang=&amp;quot;kotlin&amp;quot;&amp;gt;&lt;br /&gt;
project {&lt;br /&gt;
    buildType(Build)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
object Build : BuildType({&lt;br /&gt;
    name = &amp;quot;Build&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    vcs {&lt;br /&gt;
        root(DslContext.settingsRoot)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    steps {&lt;br /&gt;
        gradle {&lt;br /&gt;
            tasks = &amp;quot;clean build&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;div style=&amp;quot;background:#f3e5f5; border-left:5px solid #8e24aa; padding:12px; margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Інтеграційний акцент:&amp;#039;&amp;#039;&amp;#039; для великих команд TeamCity краще налаштовувати через Kotlin DSL або шаблони. Це зменшує хаос у build configurations і дозволяє керувати CI/CD як частиною репозиторію.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TeamCity Cloud і TeamCity On-Premises ==&lt;br /&gt;
TeamCity може використовуватися у хмарному або локальному варіанті.&lt;br /&gt;
&lt;br /&gt;
=== TeamCity Cloud ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TeamCity Cloud&amp;#039;&amp;#039;&amp;#039; — це керований хмарний варіант TeamCity, де частину інфраструктурних задач бере на себе JetBrains.&lt;br /&gt;
&lt;br /&gt;
Такий варіант може бути зручним, якщо команда не хоче самостійно адмініструвати TeamCity Server.&lt;br /&gt;
&lt;br /&gt;
=== TeamCity On-Premises ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TeamCity On-Premises&amp;#039;&amp;#039;&amp;#039; — це варіант, коли TeamCity Server встановлюється на сервері компанії або в її хмарній інфраструктурі.&lt;br /&gt;
&lt;br /&gt;
Офіційна документація JetBrains описує TeamCity On-Premises як CI/CD-рішення для різних workflows і development practices. ([jetbrains.com](https://www.jetbrains.com/help/teamcity/teamcity-documentation.html))&lt;br /&gt;
&lt;br /&gt;
On-Premises може бути зручним, якщо потрібен більший контроль над інфраструктурою, мережами, агентами, секретами, доступом до внутрішніх репозиторіїв і deployment-середовищ.&lt;br /&gt;
&lt;br /&gt;
== Інтеграція з Git ==&lt;br /&gt;
TeamCity може інтегруватися з системами контролю версій.&lt;br /&gt;
&lt;br /&gt;
Типові варіанти:&lt;br /&gt;
&lt;br /&gt;
* Git;&lt;br /&gt;
* GitHub;&lt;br /&gt;
* GitLab;&lt;br /&gt;
* Bitbucket;&lt;br /&gt;
* Azure DevOps Repos;&lt;br /&gt;
* інші VCS залежно від налаштувань.&lt;br /&gt;
&lt;br /&gt;
Інтеграція дозволяє:&lt;br /&gt;
&lt;br /&gt;
* відстежувати зміни;&lt;br /&gt;
* запускати build після commit;&lt;br /&gt;
* запускати build для pull request;&lt;br /&gt;
* показувати автора змін;&lt;br /&gt;
* відображати changelog;&lt;br /&gt;
* прив’язувати build до конкретного commit;&lt;br /&gt;
* повертати статус перевірки в репозиторій.&lt;br /&gt;
&lt;br /&gt;
== Інтеграція з Docker ==&lt;br /&gt;
TeamCity може використовуватися для Docker-сценаріїв:&lt;br /&gt;
&lt;br /&gt;
* збірка Docker image;&lt;br /&gt;
* запуск контейнерів для тестів;&lt;br /&gt;
* публікація image у registry;&lt;br /&gt;
* deployment контейнерів;&lt;br /&gt;
* запуск сервісів залежностей для тестів;&lt;br /&gt;
* робота з Docker Compose;&lt;br /&gt;
* підготовка середовища для integration tests.&lt;br /&gt;
&lt;br /&gt;
== Інтеграція з Gradle і Java ==&lt;br /&gt;
Для Java-проєктів TeamCity часто запускає Gradle або Maven.&lt;br /&gt;
&lt;br /&gt;
Приклад Gradle-команди:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./gradlew clean test build&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;TeamCity може зберігати результати тестів, показувати failed tests, будувати історію стабільності тестів і повідомляти команду про проблеми.&lt;br /&gt;
&lt;br /&gt;
== Інтеграція з .NET ==&lt;br /&gt;
Для .NET-проєктів TeamCity може запускати:&lt;br /&gt;
&lt;br /&gt;
* dotnet restore;&lt;br /&gt;
* dotnet build;&lt;br /&gt;
* dotnet test;&lt;br /&gt;
* dotnet publish;&lt;br /&gt;
* NuGet pack;&lt;br /&gt;
* deployment scripts.&lt;br /&gt;
&lt;br /&gt;
Це корисно для C#, ASP.NET Core, API, backend-сервісів, desktop-застосунків і бібліотек.&lt;br /&gt;
&lt;br /&gt;
== Тестування в TeamCity ==&lt;br /&gt;
TeamCity може збирати і показувати результати тестів.&lt;br /&gt;
&lt;br /&gt;
Типові тести:&lt;br /&gt;
&lt;br /&gt;
* unit-тести;&lt;br /&gt;
* integration-тести;&lt;br /&gt;
* API-тести;&lt;br /&gt;
* UI-тести;&lt;br /&gt;
* smoke-тести;&lt;br /&gt;
* regression-тести;&lt;br /&gt;
* performance-тести залежно від процесу.&lt;br /&gt;
&lt;br /&gt;
TeamCity дозволяє бачити:&lt;br /&gt;
&lt;br /&gt;
* які тести впали;&lt;br /&gt;
* у якому build вони впали;&lt;br /&gt;
* хто зробив зміни перед падінням;&lt;br /&gt;
* скільки часу виконувалися тести;&lt;br /&gt;
* які тести нестабільні;&lt;br /&gt;
* історію результатів.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#fff3e0; border-left:5px solid #fb8c00; padding:12px; margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Рекомендація:&amp;#039;&amp;#039;&amp;#039; у CI/CD потрібно розділяти швидкі unit-тести та довші інтеграційні тести. Швидкі тести варто запускати на кожен commit, а важкі перевірки — окремо або за розкладом.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Deployment у TeamCity ==&lt;br /&gt;
TeamCity може брати участь у deployment-процесах. Це може бути автоматичне або ручне розгортання.&lt;br /&gt;
&lt;br /&gt;
Типові deployment-сценарії:&lt;br /&gt;
&lt;br /&gt;
* deployment у staging;&lt;br /&gt;
* deployment у testing;&lt;br /&gt;
* deployment у production після ручного підтвердження;&lt;br /&gt;
* публікація Docker image;&lt;br /&gt;
* оновлення Kubernetes deployment;&lt;br /&gt;
* завантаження артефакту на сервер;&lt;br /&gt;
* запуск Ansible або shell-скрипта;&lt;br /&gt;
* оновлення SaaS-сервісу;&lt;br /&gt;
* rollback за потреби.&lt;br /&gt;
&lt;br /&gt;
JetBrains у CI/CD-гайді пояснює різницю між continuous delivery і continuous deployment: у continuous delivery production-реліз запускається вручну, а в continuous deployment — автоматично після успішного проходження попередніх етапів. ([jetbrains.com](https://www.jetbrains.com/teamcity/ci-cd-guide/continuous-deployment/))&lt;br /&gt;
&lt;br /&gt;
== TeamCity у K2 ERP ==&lt;br /&gt;
У контексті K2 ERP TeamCity може використовуватися для автоматизації розробки, тестування і розгортання модулів ERP, інтеграційних сервісів, API, frontend, backend, Java, .NET, Python або інших компонентів.&lt;br /&gt;
&lt;br /&gt;
TeamCity може бути корисним для:&lt;br /&gt;
&lt;br /&gt;
* збірки backend-сервісів;&lt;br /&gt;
* збірки frontend;&lt;br /&gt;
* запуску unit-тестів;&lt;br /&gt;
* запуску інтеграційних тестів;&lt;br /&gt;
* перевірки модулів ЕДО;&lt;br /&gt;
* перевірки інтеграцій з ДПС;&lt;br /&gt;
* перевірки інтеграцій з Medoc REST API;&lt;br /&gt;
* перевірки інтеграцій з EDIN, СОТА, FREDO;&lt;br /&gt;
* перевірки SAF-T UA XML;&lt;br /&gt;
* збірки Docker-образів;&lt;br /&gt;
* deployment у тестове середовище;&lt;br /&gt;
* deployment у production після підтвердження;&lt;br /&gt;
* зберігання артефактів релізів.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#ede7f6; border-left:5px solid #5e35b1; padding:12px; margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Для K2 ERP:&amp;#039;&amp;#039;&amp;#039; TeamCity бажано використовувати як центральний CI/CD-сервер для модулів системи. Він має запускати тести, перевірки, збірку, створення артефактів і контрольований deployment у середовища.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Типовий сценарій CI для K2 ERP ==&lt;br /&gt;
Типовий CI-процес може виглядати так:&lt;br /&gt;
&lt;br /&gt;
# Розробник створює гілку в Git.&lt;br /&gt;
# Розробник вносить зміни в модуль K2 ERP.&lt;br /&gt;
# Код відправляється в репозиторій.&lt;br /&gt;
# TeamCity отримує сигнал про зміни.&lt;br /&gt;
# Запускається build configuration.&lt;br /&gt;
# Build agent завантажує код.&lt;br /&gt;
# Виконується збірка.&lt;br /&gt;
# Запускаються тести.&lt;br /&gt;
# Виконується статичний аналіз.&lt;br /&gt;
# Формуються артефакти.&lt;br /&gt;
# TeamCity показує результат.&lt;br /&gt;
# Команда отримує повідомлення про успіх або помилку.&lt;br /&gt;
&lt;br /&gt;
== Типовий сценарій CD для K2 ERP ==&lt;br /&gt;
Типовий CD-процес може виглядати так:&lt;br /&gt;
&lt;br /&gt;
# TeamCity успішно завершує CI-збірку.&lt;br /&gt;
# Створюється артефакт або Docker image.&lt;br /&gt;
# Артефакт публікується в registry або сховище.&lt;br /&gt;
# Запускається deployment у тестове середовище.&lt;br /&gt;
# Виконуються smoke-тести.&lt;br /&gt;
# Відповідальна особа підтверджує production deployment.&lt;br /&gt;
# TeamCity запускає production deployment.&lt;br /&gt;
# Система перевіряє стан сервісу після оновлення.&lt;br /&gt;
# Результат deployment зберігається в історії.&lt;br /&gt;
&lt;br /&gt;
== Дані, які бажано зберігати ==&lt;br /&gt;
У TeamCity або пов’язаних системах бажано зберігати:&lt;br /&gt;
&lt;br /&gt;
* назву build configuration;&lt;br /&gt;
* номер build;&lt;br /&gt;
* commit hash;&lt;br /&gt;
* автора змін;&lt;br /&gt;
* гілку;&lt;br /&gt;
* статус build;&lt;br /&gt;
* дату і час запуску;&lt;br /&gt;
* дату і час завершення;&lt;br /&gt;
* build log;&lt;br /&gt;
* результати тестів;&lt;br /&gt;
* артефакти;&lt;br /&gt;
* версію застосунку;&lt;br /&gt;
* Docker image tag;&lt;br /&gt;
* середовище deployment;&lt;br /&gt;
* користувача, який запустив deployment;&lt;br /&gt;
* причину помилки;&lt;br /&gt;
* історію змін pipeline.&lt;br /&gt;
&lt;br /&gt;
== Можливі помилки під час роботи ==&lt;br /&gt;
Під час роботи з TeamCity можуть виникати такі проблеми:&lt;br /&gt;
&lt;br /&gt;
* build agent недоступний;&lt;br /&gt;
* неправильні облікові дані до Git;&lt;br /&gt;
* репозиторій недоступний;&lt;br /&gt;
* неправильна гілка;&lt;br /&gt;
* не встановлений потрібний SDK;&lt;br /&gt;
* не встановлений Docker;&lt;br /&gt;
* помилка Gradle або Maven;&lt;br /&gt;
* помилка npm;&lt;br /&gt;
* тести падають;&lt;br /&gt;
* нестабільні тести;&lt;br /&gt;
* не вистачає пам’яті на build agent;&lt;br /&gt;
* неправильно налаштовані змінні середовища;&lt;br /&gt;
* відсутній секрет або токен;&lt;br /&gt;
* немає прав на deployment;&lt;br /&gt;
* артефакт не збережено;&lt;br /&gt;
* production deployment запущено помилково.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#fff3e0; border-left:5px solid #fb8c00; padding:12px; margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Рекомендація:&amp;#039;&amp;#039;&amp;#039; усі deployment-збірки, особливо production, мають мати обмежені права доступу, журнал запусків, зрозумілі параметри, ручне підтвердження або чіткі автоматичні умови.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Безпека TeamCity ==&lt;br /&gt;
Для безпечної роботи TeamCity потрібно контролювати:&lt;br /&gt;
&lt;br /&gt;
* права користувачів;&lt;br /&gt;
* групи доступу;&lt;br /&gt;
* доступ до проєктів;&lt;br /&gt;
* доступ до production deployment;&lt;br /&gt;
* секрети;&lt;br /&gt;
* токени;&lt;br /&gt;
* SSH-ключі;&lt;br /&gt;
* доступ до Docker registry;&lt;br /&gt;
* доступ до build agents;&lt;br /&gt;
* журнал дій;&lt;br /&gt;
* оновлення TeamCity;&lt;br /&gt;
* оновлення build agents;&lt;br /&gt;
* ізоляцію агентів;&lt;br /&gt;
* доступ до артефактів;&lt;br /&gt;
* доступ до логів;&lt;br /&gt;
* доступ до змінних середовища.&lt;br /&gt;
&lt;br /&gt;
== Дані, які не варто відкривати в build logs ==&lt;br /&gt;
У build logs не варто виводити:&lt;br /&gt;
&lt;br /&gt;
* паролі;&lt;br /&gt;
* токени API;&lt;br /&gt;
* приватні ключі;&lt;br /&gt;
* production connection strings;&lt;br /&gt;
* ключі електронного підпису;&lt;br /&gt;
* секрети CI/CD;&lt;br /&gt;
* персональні дані клієнтів;&lt;br /&gt;
* конфіденційні фінансові дані;&lt;br /&gt;
* вміст production-баз;&lt;br /&gt;
* приватні сертифікати.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:#ffebee; border-left:5px solid #e53935; padding:12px; margin:12px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Не плутати:&amp;#039;&amp;#039;&amp;#039; TeamCity може зберігати секрети як параметри збірки, але їх не можна виводити в логах або передавати в незахищені скрипти. CI/CD має бути налаштований так, щоб секрети не потрапляли в артефакти або повідомлення.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Переваги TeamCity ==&lt;br /&gt;
До основних переваг TeamCity можна віднести:&lt;br /&gt;
&lt;br /&gt;
* зручний вебінтерфейс;&lt;br /&gt;
* підтримку CI/CD-процесів;&lt;br /&gt;
* build agents;&lt;br /&gt;
* build chains;&lt;br /&gt;
* інтеграцію з Git;&lt;br /&gt;
* підтримку Gradle, Maven, .NET, Docker та інших інструментів;&lt;br /&gt;
* зберігання історії збірок;&lt;br /&gt;
* показ результатів тестів;&lt;br /&gt;
* підтримку Configuration as Code;&lt;br /&gt;
* Kotlin DSL;&lt;br /&gt;
* контроль прав доступу;&lt;br /&gt;
* гнучкі тригери;&lt;br /&gt;
* інтеграцію з JetBrains-екосистемою;&lt;br /&gt;
* підтримку on-premises і cloud-сценаріїв.&lt;br /&gt;
&lt;br /&gt;
== Обмеження та ризики ==&lt;br /&gt;
Під час впровадження TeamCity потрібно враховувати:&lt;br /&gt;
&lt;br /&gt;
* потребу в адмініструванні сервера;&lt;br /&gt;
* потребу в build agents;&lt;br /&gt;
* потребу в ліцензіях залежно від масштабу;&lt;br /&gt;
* потребу в налаштуванні доступів;&lt;br /&gt;
* потребу в контролі секретів;&lt;br /&gt;
* потребу в оновленнях;&lt;br /&gt;
* потребу в резервному копіюванні;&lt;br /&gt;
* ризик накопичення складних build configurations;&lt;br /&gt;
* ризик нестабільних тестів;&lt;br /&gt;
* ризик неконтрольованого deployment;&lt;br /&gt;
* потребу в моніторингу диску, CPU і пам’яті.&lt;br /&gt;
&lt;br /&gt;
== Висновок ==&lt;br /&gt;
TeamCity — це CI/CD-сервер JetBrains для автоматизації збірки, тестування, публікації артефактів і розгортання програмного забезпечення.&lt;br /&gt;
&lt;br /&gt;
Для команд, які розробляють ERP, SaaS, API, інтеграційні сервіси, Java, .NET, Docker або мікросервісні системи, TeamCity може бути центральним інструментом контролю якості та доставки змін. У K2 ERP TeamCity доцільно використовувати для автоматизованих збірок, тестів, перевірок інтеграцій, формування артефактів і контрольованого deployment у різні середовища.&lt;br /&gt;
&lt;br /&gt;
== Джерела ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.jetbrains.com/teamcity/ TeamCity — JetBrains]&lt;br /&gt;
* [https://www.jetbrains.com/teamcity/features/ TeamCity Features]&lt;br /&gt;
* [https://www.jetbrains.com/help/teamcity/teamcity-documentation.html TeamCity Documentation]&lt;br /&gt;
* [https://www.jetbrains.com/help/teamcity/continuous-integration-with-teamcity.html Continuous Integration with TeamCity]&lt;br /&gt;
* [https://www.jetbrains.com/teamcity/ci-cd-guide/ci-servers/ What is a CI server?]&lt;br /&gt;
* [https://www.jetbrains.com/teamcity/ci-cd-guide/continuous-deployment/ Continuous Deployment — TeamCity Guide]&lt;br /&gt;
&lt;br /&gt;
== Див. також ==&lt;br /&gt;
[[Java]]&lt;br /&gt;
&lt;br /&gt;
[[Gradle]]&lt;br /&gt;
&lt;br /&gt;
[[Rider]]&lt;br /&gt;
&lt;br /&gt;
[[SaaS]]&lt;br /&gt;
&lt;br /&gt;
[[OpenCart]]&lt;br /&gt;
&lt;br /&gt;
[[Tilda Commerce]]&lt;br /&gt;
&lt;br /&gt;
[[Medoc REST API]]&lt;br /&gt;
&lt;br /&gt;
[[M.E.Doc.ЕДО]]&lt;br /&gt;
&lt;br /&gt;
[[Edin]]&lt;br /&gt;
&lt;br /&gt;
[[FREDO]]&lt;br /&gt;
&lt;br /&gt;
[[СОТА]]&lt;br /&gt;
&lt;br /&gt;
[[ДПС]]&lt;br /&gt;
&lt;br /&gt;
[[SAF-T UA]]&lt;br /&gt;
&lt;br /&gt;
[[Е-ТТН]]&lt;br /&gt;
&lt;br /&gt;
[[Інтеграція РРО в Python]]&lt;br /&gt;
&lt;br /&gt;
[[Технічне завдання: Редактор ER-моделей K2 ERP]]&lt;br /&gt;
&lt;br /&gt;
[[Технічне завдання: Редактор BP-моделей K2 ERP]]&lt;/div&gt;</summary>
		<author><name>R</name></author>
	</entry>
</feed>