đïž TeamCity (JetBrains) â Guide CI/CD DevOps
TeamCity est une plateforme CI/CD (on-prem + cloud) orientĂ©e pipelines, agents, build configuration, et une excellente intĂ©gration VCS (GitHub/GitLab/Bitbucket/PerforceâŠ).
Vue dâensemble
DĂ©finition, positionnement, cas dâusage, editions (On-Prem vs Cloud).
DevOpsCI/CDJetBrainsArchitecture
Server + Build Agents, file dâattente, artefacts, DB, proxy, sĂ©curitĂ© rĂ©seau.
AgentsQueueOn-PremBuild Config & Pipelines
Build configurations, steps, triggers, dependencies, templates, Kotlin DSL.
Kotlin DSLTemplatesTriggersIntégration Git / VCS
GitHub/GitLab/Bitbucket, PR build, status checks, branch specs, monorepo.
GitHubGitLabPR checksAgents & Pools
Installation agents, pools, requirements, auto-scale, Docker/K8s runners.
PoolsDockerScaleArtefacts & Déploiement
Publish artefacts, versionning, promote, build chain, deploy patterns.
ArtifactsReleasePromoteSécurité & Gouvernance
Secrets, tokens VCS, RBAC, audit, isolation agents, supply chain.
RBACSecretsAuditPerformance & Scalabilité
ParallĂ©lisme, file dâattente, cache deps, tuning JVM, stockage artefacts.
ParallelCacheTuningBonnes pratiques
Builds deterministes, templates, Kotlin DSL, quality gates, promotion immuable.
QualityDSLImmutableDépannage
Agents offline, builds âstuckâ, VCS auth, timeouts, caches, droits, proxy.
LogsAgentsProxyMigration
Mapping Jenkins/Bamboo â TeamCity, stratĂ©gie de bascule, piĂšges, checklist.
MigrationCI/CDChecklistLiens & ressources
Pages officielles JetBrains : produit, download, docs agents, cloud, licensing.
DocsDownloadCloudTeamCity en 30 secondes
TeamCity (JetBrains) est un serveur CI/CD qui orchestre des build configurations exécutées sur des build agents. Il gÚre : triggers VCS, étapes de build, artefacts, chaßnes de dépendances, templates, et une automation robuste en contexte entreprise.
Catégorisation IDEO-Lab
Diagramme âVCS â agents â artefactsâ
Developer
ââ git push / PR
â
âŒ
VCS (GitHub/GitLab/Bitbucket)
â (trigger)
âŒ
TeamCity Server
ââ Queue (builds en attente)
ââ Build Configurations
ââ Build Chains / Dependencies
ââ Artifacts + Reports
â
âŒ
Build Agents (Linux/Windows/macOS)
ââ steps: build/test/package
ââ publish artifacts
Diff âpragmatiqueâ vs Bamboo
- TeamCity : forte culture build configs + templates + DSL Kotlin.
- Bamboo : forte intĂ©gration Atlassian (Jira/Bitbucket) et sĂ©paration CI/CD âPlans vs Deploymentsâ.
Ăditions (On-Prem vs Cloud)
TeamCity On-Prem (self-hosted)
- ContrÎle total (réseau, stockage, agents, compliance).
- Intégration SSO/RBAC, proxy, topologies enterprise.
- IdĂ©al quand la CI/CD doit rester âdans le SIâ.
TeamCity Cloud (SaaS managé)
- Ops simplifiĂ©s, agents gĂ©rĂ©s par JetBrains + possibilitĂ© dâagents self-hosted.
- ModĂšle dâabonnement (committers / ressources). :contentReference[oaicite:1]{index=1}
Quand TeamCity est un excellent choix ?
â TrĂšs pertinent siâŠ
- Tu veux un CI/CD enterprise avec agents contrÎlés (OS, outils, licences).
- Tu as des besoins de build chains (dépendances entre builds/services).
- Tu aimes factoriser via templates ou Kotlin DSL (infrastructure CI âas codeâ).
- Tu gĂšres du multi-plateforme (Linux/Windows/macOS) et des matrices de builds.
â ïž Moins pertinent siâŠ
- Tu veux du ârepo-centric YAMLâ pur (GitHub Actions / GitLab CI) sans serveur dĂ©diĂ©.
- Tu cherches un outil ultra âplugins-firstâ (Jenkins) pour des cas trĂšs atypiques.
Comparatif express
| CritĂšre | TeamCity | Jenkins | Bamboo |
|---|---|---|---|
| Philosophie | Build configs + templates + Kotlin DSL | Scripts + plugins + Jenkinsfile | UI + intégration Atlassian |
| Agents | Central (pools, requirements) | Central (nodes/labels) | Central (agents/capacities) |
| Traçabilité | TrÚs bonne (VCS statuses, historique) | TrÚs bonne (selon config) | TrÚs forte avec Jira/Bitbucket |
| Time-to-value | Bon (UI + templates) | Variable (setup lourd) | Bon si Atlassian |
Briques principales
- TeamCity Server : UI, scheduler, permissions, metadata builds, intégration VCS.
- Build Agents : exécutent les steps (compilation, tests, packaging).
- Queue : builds en attente quand agents occupés.
- DB : config + historique (selon install).
- Artefacts : outputs (packages, images, rapports).
Schéma de référence
+---------------------+ assigns builds +---------------------+
| TeamCity Server |----------------------->| Agent Pool |
| UI + Scheduler | | Linux/Win/macOS |
+----------+----------+ +----------+----------+
| artifacts/reports |
v v
+------------------+ +------------------+
| Artifact Storage |<-------------------------| Build Steps |
+------------------+ +------------------+
Agents & ârequirementsâ (Ă©quivalent capacities/labels)
Pourquoi câest critique
- Garantir un environnement de build stable (versions outils).
- Router les builds vers le bon pool (docker, android, java17âŠ).
- RĂ©duire les builds âflakyâ (dĂ©pendances non prĂ©sentes).
Exemple (requirements)
Build Config: "docker-image"
Requirements:
- docker.server.version exists
- teamcity.agent.jvm.os.name = Linux
- env.MEM_GB >= 16
Build Config: "android"
Requirements:
- env.ANDROID_HOME exists
- teamcity.agent.jvm.os.name = Linux OR macOS
Réseau / Proxy / communication agent-server
En entreprise, TeamCity est souvent derriĂšre un proxy/reverse-proxy (TLS, headers, auth), et les agents doivent pouvoir joindre le server de maniĂšre fiable.
- Stabiliser DNS/Certificates (TLS) et accĂšs sortant des agents.
- Isoler les pools dâagents (prod vs non-prod) si besoin.
- Durcir les permissions des comptes qui exécutent les builds.
Stockage & artefacts
RĂšgles dâor
- Artefacts = outputs immuables (reproductibilité).
- Purge/retention : lâhistorique peut grossir vite (logs + artifacts).
- Versionner les releases (tag + build number).
Artefacts typiques
frontend-dist.zip
backend-wheel.whl
app.jar
docker image: registry/app:1.2.3
reports: coverage.xml, junit.xml, sbom.json
Le modĂšle TeamCity
Project
ââ Build Configuration A (CI: tests)
ââ Build Configuration B (CI: build/package)
ââ Build Configuration C (CD: deploy) [pattern]
Build Configuration:
- VCS Root(s)
- Build Steps (runner: shell, Maven, Gradle, Docker, PowerShell...)
- Triggers (VCS, schedule, finish build...)
- Dependencies (snapshot / artifact)
- Parameters (env vars, secrets)
- Requirements (agent capabilities)
Templates : factoriser (éviter duplication)
Pourquoi
- Standardiser âlint + unit tests + reportsâ sur 30 services.
- Centraliser les versions outils, timeouts, steps.
- RĂ©duire la dĂ©rive (âsnowflake pipelinesâ).
Pattern de template
Template: "python-ci"
- steps: venv, pip install, ruff, pytest
- artifacts: junit.xml, coverage.xml
- parameters: PY_VERSION, REQUIREMENTS_FILE
- requirements: python exists
Build Config "svc-users" uses template "python-ci"
Build Config "svc-billing" uses template "python-ci"
Kotlin DSL : CI âas codeâ
TeamCity peut définir projets/build configs via Kotlin DSL, utile pour versionner la CI et reviewer les changements comme du code (PR, audit).
// Vue conceptuelle (pseudo)
project {
buildType("Backend_Tests") { steps { ... } triggers { ... } }
buildType("Docker_Build") { dependencies { ... } }
}
Exemple complet : Django + React + Docker
Build Config A â Tests
Steps:
- checkout
- python -m venv venv
- pip install -r requirements.txt
- ruff check .
- pytest -q --maxfail=1
Artifacts:
- junit.xml
- coverage.xml
Build Config B â Build image
Steps:
- docker build -t registry/app:%build.number% .
- docker push registry/app:%build.number%
Artifacts:
- build-metadata.json
Dependencies:
- snapshot: Build Config A
Build Config C â Deploy (pattern)
Trigger:
- on finish Build Config B (main branch)
Steps:
- deploy to DEV (auto)
- smoke tests
- manual approval STAGE
- manual approval PROD
Artifact dependency:
- pull registry/app:%dep.B.build.number%
VCS Roots : standardiser lâaccĂšs aux repos
- Centraliser auth (tokens) + permissions (scopes minimaux).
- Définir branch specs (main, feature/*, release/*).
- Activer status reporting vers la plateforme (checks / commit status).
PR builds : âquality gateâ avant merge
Pull Request opened
ââ Trigger CI "fast"
- lint
- unit tests
- quick build
ââ Report status to Git provider
- â
merge allowed
- â merge blocked
Objectif : feedback en minutes, pas en heures.
Monorepo : ne pas builder tout le repo Ă chaque commit
- DĂ©tecter chemins modifiĂ©s â dĂ©clencher uniquement les builds concernĂ©s.
- Build matrices (services x versions) si besoin.
- Cache agressif (deps) + pipelines âfast/slowâ.
Installation des agents (vision opérationnelle)
En prod, on installe des agents sur des machines dédiées (VM/bare metal/K8s nodes) pour maßtriser CPU/RAM/disque et stabiliser les builds.
Bonnes pratiques:
- 1 pool "fast CI" (petites VM)
- 1 pool "heavy" (grosse VM pour docker builds)
- 1 pool "windows" si besoin
- 1 pool "macOS" si besoin (iOS/builds)
Pools : isoler & scaler
| Pool | Usage | Requirements typiques |
|---|---|---|
| fast-ci | Lint + unit tests | python/node, RAM 4â8GB |
| docker-build | Images Docker | docker, RAM 16â64GB, SSD |
| windows | .NET / MSBuild | Windows + toolchain |
Docker/K8s : pattern moderne
Option A: Agent VM + Docker
- stable, simple
- bon pour enterprise networks
Option B: Agents éphémÚres (auto-scale)
- agents up/down selon la queue
- attention Ă la gestion cache & secrets
Policies âproâ
- Exécuter les builds avec des comptes à privilÚges minimaux.
- Durcir la chaßne supply chain (SBOM, scan images, dépendances).
- Tracer les artefacts (git_sha + build number + timestamp).
Artefacts immuables : la base du âpromoteâ
CI build -> produit:
- docker image registry/app:1.2.3+build1234
- build-metadata.json (git_sha, buildNumber, deps digest)
Puis:
- deploy DEV -> STAGE -> PROD (mĂȘme artefact)
Build chains : snapshot vs artifact dependency
| Type | But | Quand |
|---|---|---|
| Snapshot dependency | Assurer cohérence de révision entre builds | Microservices / monorepo / pipeline chain |
| Artifact dependency | RĂ©cupĂ©rer outputs dâun build prĂ©cĂ©dent | Deploy qui consomme lâartefact CI |
DĂ©ploiement : patterns (sans âopinionâ unique)
Pattern 1: Deploy via SSH/Ansible
- pull artefact
- restart service
- smoke tests
Pattern 2: Deploy K8s (helm/kubectl)
- helm upgrade --install
- canary + rollback
Pattern 3: Deploy Cloud (ECS/EC2)
- update task definition / ASG
- blue/green
Rapports (qualité) : JUnit, coverage, scans
- JUnit : visibilité tests et erreurs récurrentes.
- Coverage : seuils (quality gate) et détection régressions.
- Security scans : dépendances, images Docker, SBOM.
RBAC : qui peut faire quoi ?
- Permissions par projets/build configs.
- Limitations sur actions sensibles (deploy, approvals, paramĂštres).
- Audit des changements CI (templates/DSL).
Secrets : rÚgles non négociables
â
Tokens VCS scopes minimaux
â
Secrets par env (DEV != PROD)
â
Masquage dans logs
â
Rotation/expiration
â Jamais dans le repo
Supply chain (bonus âenterpriseâ)
- SBOM (ex: CycloneDX/SPDX) et scans dépendances.
- Scan images Docker (Trivy/Grype) avant registry/prod.
- Signer artefacts (si politique) + provenance.
KPIs Ă suivre
| KPI | Lecture | Action |
|---|---|---|
| Queue length | Saturation agents | Ajouter agents / split pipelines |
| Build duration | Feedback loop | Cache deps, parallĂ©lisme, steps âfast/slowâ |
| Flaky rate | Instabilité | Builds deterministes, isolation env |
Cache (gains x2 Ă x10)
Caches typiques:
- pip/wheels
- npm/yarn
- maven/gradle
- docker layer cache (selon stratégie)
Stratégie agents (pragmatique)
- Pool âfast CIâ (petits agents) + pool âheavy buildsâ (gros agents).
- Conserver les images/outils cohérents (golden images).
- Agents éphémÚres si auto-scale (attention cache/secrets).
Les rĂšgles qui font âproâ
- Builds déterministes (versions figées, lockfiles).
- Templates / Kotlin DSL pour standardiser.
- Artefacts immuables + promotion.
- Fast CI vs Full CI (feedback rapide).
- Secrets externalisés (scopes minimaux).
- Observabilité (reports, logs, trending).
- Approvals en prod + audit trail.
- Rollback plan testé (pas juste théorique).
- Pools isolés (heavy builds vs fast).
- Retention sur logs/artefacts (coût/stockage).
Quality gates (exemples)
| Gate | Outil | Seuil | But |
|---|---|---|---|
| Lint | ruff/eslint | 0 erreur | Qualité |
| Coverage | pytest-cov | ℠80% | Régression |
| SAST | scan deps/images | 0 critical | Sécurité |
Une ligne CV-ready
Mise en place de pipelines CI/CD TeamCity (templates, build chains, quality gates, artefacts immuables),
avec orchestration multi-agents (pools/requirements) et déploiements multi-environnements.
Agents offline / queue qui monte
- VĂ©rifier network/DNS/TLS (agent â server).
- VĂ©rifier requirements : le build exige âdockerâ mais pool sans docker.
- CPU/RAM/IO saturés : ajouter agents ou revoir pipeline.
Auth VCS / status checks
- Token expirĂ© / scopes insuffisants â renouveler + limiter droits.
- Branch specs trop restrictives â build non dĂ©clenchĂ©.
- PR builds : vérifier hooks / triggers + mapping repo.
Build âstuckâ / timeouts / flaky
- Réduire dépendances réseau (mirrors + caches).
- Fixer versions outils/dépendances.
- ParallĂ©liser, dĂ©couper steps, rĂ©duire âheavy buildsâ sur PR.
Cache qui casse la reproductibilité
SymptĂŽmes:
- build OK hier, KO aujourd'hui sans changement
Actions:
- purge cache
- lockfiles stricts
- pin versions
Mapping conceptuel
| Jenkins | Bamboo | TeamCity | Notes |
|---|---|---|---|
| Pipeline (Jenkinsfile) | Plan (Stages/Jobs) | Build Config(s) + Dependencies | TeamCity préfÚre découper en build chain |
| Node/Label | Agent/Capabilities | Agent Pools + Requirements | Isoler heavy builds |
| Artifacts | Artifacts | Artifacts (+ artifact dependency) | Promote immuable recommandé |
Stratégie safe (entreprise)
- Pilote sur un service non critique
- Reproduire CI Ă lâidentique (tests/outputs)
- Factoriser via templates / DSL
- Mettre en place artefacts immuables + promotion
- Basculer triggers VCS progressivement
PiÚges fréquents
- Builds non déterministes (versions non figées).
- Secrets dans scripts â refactor paramĂštres sĂ©curisĂ©s.
- Monorepo : builds dĂ©clenchĂ©s âtrop largeâ.
- Cache non maĂźtrisĂ© â flaky builds.
Checklist
| Item | OK ? | Notes |
|---|---|---|
| Agents/pools dimensionnés + requirements définis | ⏠| |
| Templates / DSL pour standardiser | ⏠| |
| Quality gates (lint/coverage/security) | ⏠| |
| Artefacts immuables + promotion | ⏠| |
| RBAC + audit changes CI | ⏠|
JetBrains â TeamCity
- Page produit TeamCity :contentReference[oaicite:5]{index=5}
- Download TeamCity :contentReference[oaicite:6]{index=6}
- Docs : Install & Start Agents :contentReference[oaicite:7]{index=7}
- TeamCity Cloud :contentReference[oaicite:8]{index=8}
- Pricing / Licensing (On-Prem) :contentReference[oaicite:9]{index=9}
TL;DR
TeamCity = CI/CD JetBrains
Core:
- Server (orchestration) + Agents (execution)
- Build Configurations + Steps + Triggers
- Templates / Kotlin DSL (CI as code)
- Dependencies (snapshot/artifact) => build chains
Ops:
- Pools + Requirements => routing
- Monitor queue length, build duration, flaky rate
- Cache deps + artefacts immuables + promotion
