---
id: cicd-teamcity
title: "TeamCity"
shortTitle: "TeamCity"
track: cicd
trackTitle: "CI/CD"
order: 8
level: normal
status: published
estimatedMinutes: 25
prerequisites:
  - cicd-cloud-build
next: cicd-bitbucket
reviewedAgainst: 2026-10-12
sources:
  - title: "Configure and run your first build"
    url: https://www.jetbrains.com/help/teamcity/configure-and-run-your-first-build.html
  - title: "Build configuration"
    url: https://www.jetbrains.com/help/teamcity/build-configuration.html
---

# TeamCity

TeamCity là CI của JetBrains. Build configuration là đơn vị chạy. Có thể bấm trên UI hoặc để Kotlin DSL trong repo. Bài này để đọc tên gọi khi gặp server TeamCity.

## Để làm gì

Bạn phân biệt được project, build configuration, và agent. Không dựng server.

## Gồm những gì

- VCS root, build step, trigger.
- Agent và hàng đợi.
- Kotlin DSL: file nằm trong `.teamcity`.

Bài này không đụng license server, cũng không cài agent.

## Dùng khi nào

Một sản phẩm cũ đang build trên TeamCity. Không chuyển lộ trình này sang TeamCity. GitHub Actions vẫn là bài CI chính.

Đừng cấu hình build chỉ trên UI rồi không commit DSL, nếu team muốn review được thay đổi. UI tiện cho lần đầu, rồi bản trên server lệch với repo trên máy khác.

## Kiến thức cốt lõi

Một project chứa nhiều build configuration. Mỗi configuration có VCS root, là nơi lấy Git, một hoặc nhiều build step, và trigger. Trigger VCS chạy khi có commit. Trigger theo lịch chạy dù không có commit.

Agent là máy chạy bước. Server giữ hàng đợi và UI. Không có agent tương thích thì build nằm chờ, giống Runner pending của GitLab.

Artifact là file bước publish. Build sau lấy artifact của build trước bằng dependency, không copy tay trên đĩa agent.

Kotlin DSL trong `.teamcity` sinh ra cấu hình. Đổi DSL rồi commit. Server áp dụng theo phiên bản trong VCS.

## Lệnh và code mẫu

Không có CLI bắt buộc. Khi đọc một màn hình build, tìm bốn dòng:

| Ô trên UI | Việc |
| --- | --- |
| VCS root | Repo và nhánh |
| Build step | Lệnh hoặc runner, ví dụ command line |
| Trigger | Khi nào chạy |
| Agent | Máy nào nhận |

## Thực hành

1. Điền bốn ô đó cho một pipeline tưởng tượng: repo `app`, lệnh `npm test`, chạy khi push `main`, agent Linux.
2. Không tải TeamCity.
3. Nếu công ty có server, chỉ mở một build đã chạy và đọc log, không bấm run trên configuration production.

## Kết quả mong đợi

Bạn gọi đúng build configuration, không gọi nhầm thành Jenkins job.

## Checklist

- [ ] Bước build không chứa password.
- [ ] Agent không phải máy cá nhân.
- [ ] Đổi cấu hình thì có trong DSL hoặc có người được phép sửa UI, không cả hai đường trái ngược nhau.

## Lỗi thường gặp

**Build kẹt trong hàng đợi.** Không có agent đúng. Xem requirement của configuration và agent đang online. Đừng bấm run thêm lần nữa.

**Artifact hết hạn trên server.** Build sau không còn file để lấy. Giữ artifact đủ lâu cho dependency, hoặc đẩy file sang registry và kho artifact thật.

## Nguồn

1. [Configure and run your first build](https://www.jetbrains.com/help/teamcity/configure-and-run-your-first-build.html) — project và build configuration.
2. [Build configuration](https://www.jetbrains.com/help/teamcity/build-configuration.html) — step, trigger, artifact.

## Tiếp theo

[Bitbucket Pipelines](./10-bitbucket.md)
