Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

⚙️ CircleCI — CI/CD “config.yml”, Workflows, Orbs, Runners

CircleCI est une plateforme CI/CD orientée pipelines as code via .circleci/config.yml (version 2.1), orchestrée par workflows, enrichie par Orbs (packages de config réutilisables) et exécutée sur compute cloud ou self-hosted runners. :contentReference[oaicite:1]{index=1}

1.1

Vue d’ensemble

CircleCI en 2026 : philosophie, forces, cas d’usage, modèle credits, cloud vs runners.

CI/CDCloudPipelines
1.2

Architecture & concepts

Jobs, steps, workflows, contexts, workspaces, caching, artifacts, approvals.

WorkflowsContextsCaching
1.3

.circleci/config.yml

Structure YAML 2.1, executors (docker/machine/macOS), filters, parameters, matrix.

YAML2.1Executors
2.1

Workflows

Orchestration: dépendances entre jobs, fan-out/fan-in, approvals, branches/tags.

OrchestrateApprovalsFilters
2.2

Orbs

Packages réutilisables de config: commands/jobs/executors. Registry & orbs privés.

ReuseRegistryDRY
2.3

Self-hosted Runners

Exécuter les jobs on-prem / VPC / arch spécifique, resource classes, contrôle OS.

RunnerOn-premResource class
3.1

Caches / Workspaces / Artifacts

Accélération CI: caches (deps), workspaces (handoff), artifacts (outputs).

SpeedArtifactsWorkspaces

Sécurité & secrets

Contexts, env vars, least privilege, tokens, isolation, runner network, audit.

ContextsSecretsIsolation
4.1

Perf & coûts (Credits)

Comprendre le modèle credits: coût = classe machine × minutes; stratégies d’optimisation.

CreditsFinOpsParallel
4.2

Bonnes pratiques

DRY via orbs/commands, pipelines rapides vs full, gating, immutabilité artefacts, rollback.

Best practicesDRYGates

Migration

Mapping Jenkins/Bamboo → CircleCI, stratégie progressive, check-list, pièges.

MigrationCI/CDChecklist
5.1

Liens & docs

Docs officielles : pipelines, config intro + reference, orbs, runners, pricing/credits.

DocsPricingReference
5.2

Cheat-sheet

Résumé ultra opérationnel + phrase “CV-ready”.

TL;DRCVOps
1.1 CircleCI — définition, éditions, où ça brille
CircleCI en 30 secondes

CircleCI exécute tes builds/tests/deploy à partir d’un fichier .circleci/config.yml. Tu définis des jobs (étapes), tu les orchestras via des workflows, et tu factorises via des Orbs (packages de config réutilisables). :contentReference[oaicite:2]{index=2}

Catégorisation IDEO-Lab
DevOps CI/CD Pipelines as code Build acceleration
Angle “enterprise” : CircleCI est très fort sur la standardisation (orbs/commands), et la maîtrise de l’exécution (classes machines, parallélisme, runners self-hosted).
Cloud compute + self-hosted runners
  • Cloud : Docker / VM / macOS (selon options), rapide à démarrer.
  • Self-hosted runners : exécuter dans ton VPC / on-prem, avec accès réseau privé & contrôle OS. :contentReference[oaicite:3]{index=3}
  • Resource classes : router certains jobs vers des capacités spécifiques (Linux/macOS/etc.). :contentReference[oaicite:4]{index=4}
Repo push/PR
  -> pipeline (config.yml)
     -> workflows
        -> jobs
           -> executor (docker/machine/runner)
           -> artifacts / caches / workspaces
            
Diagramme CI/CD simple (build → test → deploy)
workflows:
  build_test_deploy:
    jobs:
      - lint
      - unit_tests:
          requires: [lint]
      - build_image:
          requires: [unit_tests]
      - deploy_staging:
          requires: [build_image]
      - hold_prod:
          type: approval
          requires: [deploy_staging]
      - deploy_prod:
          requires: [hold_prod]
        
Idée : “hold/approval” est un gate humain, utile pour PROD / releases sensibles.
✅ Très pertinent si…
  • Tu veux du CI/CD robuste “as code” avec workflows clairs.
  • Tu veux un catalogue de building blocks (Orbs) pour standardiser les pipelines. :contentReference[oaicite:5]{index=5}
  • Tu as besoin de runners self-hosted (réseau privé / compliance / arch atypique). :contentReference[oaicite:6]{index=6}
  • Tu veux optimiser coût/temps via classes machines + parallélisme.
⚠️ Points d’attention
  • La discipline “config as code” est essentielle : conventions, factorisation (commands/orbs).
  • Gérer les secrets proprement (contexts, env vars, least privilege).
  • FinOps: mesurer durée, queue time, cache hit, et ajuster la classe machine.
Modèle “Credits” (lecture rapide)

Le coût est généralement lié à la consommation de compute (classe machine × durée). CircleCI documente l’usage des credits et la vente en packs. :contentReference[oaicite:7]{index=7}

Pratique : réduire la durée d’un job (cache, parallélisme) = réduire les credits.
1.2 Architecture — jobs, contexts, caching, workspaces, artifacts
Modèle mental
config.yml (2.1)
  - executors: docker/machine/macOS/runner
  - commands: mini-steps réutilisables
  - jobs: suites de steps
  - workflows: orchestration jobs (requires, filters, approval)
            
But : industrialiser : le pipeline devient un vrai produit (versionné + review).
Workflows = orchestration
  • Fan-out (jobs parallèles) puis fan-in (agrégation).
  • Filtres branches/tags pour éviter les builds inutiles.
  • Approval step pour PROD / release.
Caches / Workspaces / Artifacts : ne pas confondre
MécanismeButExempleRisque
Cacheaccélérerpip/npm/mavencache “sale” si clé mal conçue
Workspacehandoff jobsbuild → test → packagegros workspace = lent
Artifactsoutputslogs, reports, packagesretenue/stockage
Self-hosted runners : caches/workspaces/artifacts sont compatibles (CircleCI le précise dans la FAQ runners). :contentReference[oaicite:8]{index=8}
Contexts : secrets “réutilisables” et gouvernance
Pattern:
- Context "org-prod" (secrets prod)
- Context "org-staging"
- Context "org-ci" (tokens read-only)
Attach contexts only to workflows/jobs that need them.
        
  • Principe de moindre privilège (least privilege).
  • Rotation des secrets + audit des usages.
  • Éviter “secrets dans repo” (toujours via env vars/contexts).
Gates & approvals
- job: hold_prod
  type: approval
  requires:
    - deploy_staging
        
Règle : PROD = artefact immuable + gate + rollback.
1.3 .circleci/config.yml — structure, executors, parameters, référence
Structure minimale (2.1)
version: 2.1

jobs:
  build:
    docker:
      - image: cimg/python:3.12
    steps:
      - checkout
      - run: python --version

workflows:
  main:
    jobs:
      - build
        
Référence : CircleCI explique comment le config.yml est découvert et exécuté + workflows d’orchestration. :contentReference[oaicite:9]{index=9}
Executors (lecture rapide)
ExecutorQuandNotes
dockerweb apps / testsrapide, reproductible
machineDocker-in-Docker / besoins VMaccès OS plus complet
macOSiOS/mac buildsspécifique mobile
runner (self-hosted)VPC/on-premcontrôle + réseau privé :contentReference[oaicite:10]{index=10}
Pipeline parameters (config “dynamique”)
version: 2.1

parameters:
  image-tag:
    type: string
    default: "current"

jobs:
  build:
    docker:
      - image: myorg/app:<< pipeline.parameters.image-tag >>
    steps: [checkout]

workflows:
  main:
    jobs: [build]
        
CircleCI documente les paramètres de pipeline et la configuration reference. :contentReference[oaicite:11]{index=11}
Exemple Django (lint + tests + reports)
version: 2.1

jobs:
  test:
    docker:
      - image: cimg/python:3.12
    steps:
      - checkout
      - run:
          name: Install deps
          command: |
            python -m venv venv
            . venv/bin/activate
            pip install -r requirements.txt
      - run:
          name: Lint + tests
          command: |
            . venv/bin/activate
            ruff check .
            pytest -q --maxfail=1

workflows:
  ci:
    jobs:
      - test
        
Pattern pro : pipeline rapide PR + pipeline “full” nightly (e2e, scans).
2.1 Workflows — orchestration, requires, filters, approvals
Fan-out / fan-in
workflows:
  build_test:
    jobs:
      - lint
      - unit_tests
      - integration_tests
      - package:
          requires: [lint, unit_tests, integration_tests]
        
C’est l’un des gros points forts : orchestration explicite en YAML (docs pipelines/workflows). :contentReference[oaicite:12]{index=12}
Filters (branches/tags) — éviter les builds inutiles
workflows:
  ci:
    jobs:
      - unit_tests:
          filters:
            branches:
              ignore: /release.*/
      - deploy_prod:
          filters:
            tags:
              only: /^v.*/
            branches:
              ignore: /.*/
        
Astuce : tags pour releases (v1.2.3), branches pour dev.
Approval step = gate humain
- hold_prod:
    type: approval
    requires:
      - deploy_staging
- deploy_prod:
    requires:
      - hold_prod
        
Règle : PROD = gate + artefact immuable + plan rollback.
2.2 Orbs — réutiliser (commands/jobs/executors) + registry
Orbs = “packages de configuration”

Un orb est un package réutilisable (commands/jobs/executors) pour ne pas répéter la même configuration dans chaque repo. :contentReference[oaicite:13]{index=13}

ROI : standardisation multi-repos + réduction drift + adoption rapide.
Importer un orb
version: 2.1

orbs:
  node: circleci/node@x.y.z

jobs:
  build:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - node/install
      - run: node --version
        
Les orbs sont listés dans le registry CircleCI (developer/orbs). :contentReference[oaicite:14]{index=14}
Créer / publier un orb (pattern)
Approche:
- créer des commands réutilisables (setup, build, test, deploy)
- versionner (semver)
- publier dans registry (public/privé)
        
CircleCI détaille l’authoring/publishing d’orbs (process + création). :contentReference[oaicite:15]{index=15}
2.3 Self-hosted runners — on-prem/VPC, resource classes, contrôle OS
Pourquoi utiliser des runners ?
  • Exécution dans un environnement que CircleCI ne fournit pas en compute cloud (arch/OS spécifiques). :contentReference[oaicite:16]{index=16}
  • Accès réseau privé (DB interne, registry privé, VPC, proxy d’entreprise).
  • Contrôle de l’OS + monitoring + IAM (ex : AWS IAM si runner dans AWS). :contentReference[oaicite:17]{index=17}
Resource classes = “router” les jobs
# Exemple concept
jobs:
  build_linux_private:
    resource_class: orgname/linux
    steps: ...

  build_macos_private:
    resource_class: orgname/macOS
    steps: ...
        
CircleCI explique le rôle des resource classes pour cibler des pools runners. :contentReference[oaicite:18]{index=18}
Best practices runners
  • Pool dédié “prod deploy” isolé (réseau + secrets + permissions).
  • Golden image + patching + rotation (sécurité).
  • Observabilité : logs + métriques machine + queue time.
  • Caches/workspaces/artifacts compatibles (FAQ runners). :contentReference[oaicite:19]{index=19}
3.1 Accélération CI — caches, workspaces, artifacts
Stratégie “fast feedback”
1) Cache deps (pip/npm/maven)
2) Split jobs (lint / unit / integration) + parallélisme
3) Workspaces: passer uniquement le nécessaire (pas tout le repo)
4) Artifacts: garder reports (junit/coverage) et packages
      
Tip : La clé de cache doit inclure un “lockfile hash” (requirements.lock/package-lock). Sinon cache incohérent.
Sécurité — contexts, env vars, least privilege, isolation runners
Règles d’or
✅ Contexts dédiés (prod/staging/ci)
✅ Secrets jamais dans repo
✅ Tokens à privilèges minimaux
✅ Runners isolés réseau + IAM (si VPC/on-prem)
✅ Artefacts immuables + approvals PROD
      
Point critique : le “runner deploy prod” est une surface d’attaque => isolation + contrôle d’accès strict.
4.1 Perf & coûts — credits, minutes, classes machines, optimisation
Lecture du pricing

CircleCI décrit les credits (packs, coût compute) et présente un pricing page “plans”. :contentReference[oaicite:20]{index=20}

FinOps : choisir la bonne classe machine et réduire la durée totale (cache/parallélisme).
KPIs indispensables
KPISymptômeAction
Queue timesaturationaugmenter parallélisme / runners / class
Durationfeedback lentcache + split jobs + tests shards
Cache hitdeps re-downloadclé cache basée lockfile
Flaky rateinstabilitéisolation, retry ciblé, timeouts
Quick wins (80/20)
  • Pipeline PR “fast” (lint + unit) ; pipeline nightly “full”.
  • Paralléliser tests (sharding).
  • Cache deps + Docker layers (selon executor).
  • Workspaces minimaux (uniquement build outputs).
4.2 Bonnes pratiques — DRY, orbs, gating, artefacts immuables
Top 10 pratiques pro
  1. DRY : factoriser via commands et orbs. :contentReference[oaicite:21]{index=21}
  2. Workflows explicites + requires (lisibles).
  3. PR fast pipeline + nightly full pipeline.
  4. Caching correct (clé = lockfile hash).
  5. Workspaces minimalistes.
  6. Artefacts immuables (build once deploy many).
  7. Approvals en prod (release gating).
  8. Secrets via contexts + least privilege.
  9. Runners isolés pour déploiements sensibles. :contentReference[oaicite:22]{index=22}
  10. Mesure coût/temps (credits) + optimisation continue. :contentReference[oaicite:23]{index=23}
Une ligne CV-ready
Industrialisation CI/CD sur CircleCI : pipelines as code (.circleci/config.yml), workflows multi-jobs,
standardisation via Orbs, accélération (cache/workspaces), et exécution hybride cloud + self-hosted runners,
avec gates/approvals pour releases PROD et gestion sécurisée des secrets via contexts.
        
Migration Jenkins/Bamboo → CircleCI (mapping, stratégie, checklist)
Mapping conceptuel
JenkinsBambooCircleCINotes
JenkinsfilePlanconfig.ymlYAML, version 2.1 :contentReference[oaicite:24]{index=24}
StagesStagesWorkflows + jobsrequires, fan-out/fan-in
Agents/NodesAgentsExecutors / Runnerscloud compute ou self-hosted :contentReference[oaicite:25]{index=25}
Shared libsSpecs partagéesOrbs / commandsDRY + standardisation :contentReference[oaicite:26]{index=26}
CredentialsVariables globalesContexts + env varsleast privilege
Stratégie safe (progressive)
  1. Pilote sur 1–2 repos (non critiques) → reproduire CI “à l’identique”.
  2. Standardiser très tôt : commands/orbs, conventions (noms jobs, caches).
  3. Activer caches + parallélisme + metrics (queue time, duration).
  4. Basculer progressivement : triggers, équipes, environnements.
  5. Isoler déploiements sensibles sur runners dédiés (VPC/on-prem).
Pièges fréquents
  • Cache mal conçu → builds non reproductibles / bugs fantômes.
  • Workspaces trop volumineux → pipelines lents.
  • Secrets trop “larges” (contexts) → risque majeur.
  • Absence d’artefacts immuables → déploiements inconsistants.
Checklist
ItemOK ?Notes
Conventions config.yml + commands/orbs
Caches (clé lockfile) + workspaces minimaux
Contexts secrets least privilege
Approvals pour releases PROD
Runners dédiés prod (isolation)
KPI: queue time, duration, flaky rate, cache hit
Cheat-sheet CircleCI (résumé opérationnel + CV-ready)
TL;DR
CircleCI = CI/CD via .circleci/config.yml (2.1)
- jobs + steps
- workflows (requires, filters, approvals)
- Orbs (réutilisation/standardisation)
- Executors (docker/machine/macOS) + self-hosted runners
- Perf: cache / workspaces / artifacts
- FinOps: credits = compute classe x minutes
      
Phrase “CV-ready”
Industrialisation CI/CD sur CircleCI : config.yml 2.1, workflows multi-jobs, standardisation via Orbs, accélération (cache/workspaces) et exécution hybride cloud + self-hosted runners, avec gates/approvals pour PROD et gouvernance des secrets via contexts.