[{"data":1,"prerenderedAt":785},["ShallowReactive",2],{"/fr-fr/blog/from-code-to-production-a-guide-to-continuous-deployment-with-gitlab":3,"navigation-fr-fr":43,"banner-fr-fr":448,"footer-fr-fr":458,"blog-post-authors-fr-fr-Benjamin Skierlak|James Wormwell":668,"blog-related-posts-fr-fr-from-code-to-production-a-guide-to-continuous-deployment-with-gitlab":694,"assessment-promotions-fr-fr":736,"next-steps-fr-fr":776},{"id":4,"title":5,"authorSlugs":6,"body":9,"categorySlug":10,"config":11,"content":15,"description":9,"extension":30,"isFeatured":13,"meta":31,"navigation":32,"path":33,"publishedDate":22,"seo":34,"stem":38,"tagSlugs":39,"__hash__":42},"blogPosts/fr-fr/blog/from-code-to-production-a-guide-to-continuous-deployment-with-gitlab.yml","From Code To Production A Guide To Continuous Deployment With Gitlab",[7,8],"benjamin-skierlak","james-wormwell",null,"product",{"slug":12,"featured":13,"template":14},"from-code-to-production-a-guide-to-continuous-deployment-with-gitlab",false,"BlogPost",{"title":16,"description":17,"authors":18,"heroImage":21,"date":22,"body":23,"category":10,"tags":24,"updatedDate":29},"Du code à la production : guide du déploiement continu avec GitLab","Découvrez comment créer un pipeline de déploiement continu robuste dans GitLab.",[19,20],"Benjamin Skierlak","James Wormwell","https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659478/Blog/Hero%20Images/REFERENCE_-_Use_this_page_as_a_reference_for_thumbnail_sizes.png","2025-01-28","Le déploiement continu est une pratique qui change la donne et qui permet aux équipes d'offrir de la valeur plus rapidement, avec une confiance accrue. Cependant, adopter des workflows de déploiement avancés, tels que [GitOps](https://about.gitlab.com/fr-fr/topics/gitops/ \"Qu'est-ce que GitOps ? \"), l'orchestration de conteneurs avec [Kubernetes](https://about.gitlab.com/fr-fr/blog/kubernetes-the-container-orchestration-solution/ \"Kubernetes, la solution d’orchestration des conteneurs\") ou les environnements dynamiques, peut être intimidant pour les équipes non expérimentées.\n\nChez GitLab, nous nous engageons à ce que la livraison de logiciels soit sans accroc et évolutive. En permettant aux équipes de se concentrer sur les fondamentaux, nous leur donnons les moyens d'établir une base solide qui soutient la croissance et de mettre en place des stratégies plus complexes au fil du temps.\nDans ce guide, découvrez les étapes clés pour mettre en œuvre le déploiement continu avec GitLab et poser les bases d'une réussite à long terme.\n\n## Commencez par planifier votre workflow\n\nAvant de passer à la mise en œuvre technique, prenez le temps de planifier votre workflow de déploiement. Une planification minutieuse et une approche méthodique sont les clés du succès.\n\n### Stratégie de gestion des artefacts\n\nDans le contexte du déploiement continu, les artefacts désignent les fichiers empaquetés suite au processus de compilation, destinés à être stockés, déployés et dont vous devez gérer les versions.\nEn voici quelques exemples :\n\n- images de conteneurs pour vos applications\n- paquets\n- exécutables ou fichiers binaires compilés\n- bibliothèques\n- fichiers de configuration\n- packages de documentation\n- autres artefacts\n\nChaque type d'artefact joue un rôle spécifique dans votre processus de déploiement. Par exemple, une application web typique peut générer les artefacts suivants :\n\n- une image de conteneur pour le service backend\n- une archive ZIP des ressources frontend compilées\n- des fichiers SQL pour les modifications de base de données\n- des fichiers de configuration propres à l'environnement\n\nLa gestion efficace de ces artefacts est cruciale pour la réussite des déploiements. Voici comment aborder la gestion des artefacts.\n\n#### Artefacts et stratégies de contrôle des versions\n\nUne bonne pratique permettant de démarrer avec une structure bien organisée consiste à établir une stratégie de gestion des versions claire pour vos artefacts.\nLors de la création de nouvelles versions :\n\n- Utilisez la gestion sémantique de version (major.minor.patch) pour les tags de version\n  - Exemple : `myapp:1.2.3` pour une version stable\n  - Modifications de la version majeure (2.0.0) pour les changements cassants\n  - Modifications de la version mineure (1.3.0) pour les nouvelles fonctionnalités\n  - Modifications de la version des correctifs (1.2.4) pour les corrections de bugs\n- Conservez un tag 'latest' pour la version stable la plus récente\n  - Exemple : `myapp:latest` pour les déploiements automatisés\n- Incluez un SHA de validation pour un suivi précis des versions\n  - Exemple : `myapp:1.2.3-abc123f` pour le débogage\n- Utilisez des tags basés sur les branches pour les environnements de développement\n  - Exemple : `myapp:feature-user-auth` pour les tests de fonctionnalités\n\n#### Rétention des artefacts de compilation\n\nMettez en œuvre des règles de durée de rétention définies :\n\n- Définissez des délais d'expiration explicites pour les artefacts temporaires\n- Définissez les artefacts nécessitant une durée de rétention permanente\n- Configurez des stratégies de nettoyage pour gérer le stockage\n\n#### Accès au registre et authentification\n\nSécurisez vos artefacts avec des contrôles d'accès appropriés :\n\n- Implémentez des jetons d'accès personnels (Personal Access Tokens) pour l'accès des développeurs\n- Configurez des variables CI/CD pour l'authentification du pipeline\n- Mettez en place des portées d'accès appropriées\n\n### Stratégie d’environnement de déploiement\nRéfléchissez dès le départ à la configuration de vos environnements, car ils façonnent l'ensemble de votre pipeline de déploiement :\n\n- Configurations de l'environnement de développement, de préproduction et de production\n- Variables et secrets propres à l'environnement\n- Contrôles d'accès et règles de protection\n- Approche de suivi et de surveillance du déploiement\n\n### Cibles de déploiement\n\nIl est important de réfléchir à la cible de déploiement et à l'approche choisie, tout en prenant en compte les avantages et les inconvénients de ces décisions :\n\n- Besoins en infrastructure (machines virtuelles, conteneurs, services cloud)\n- Configurations de la sécurité et de l'accès au réseau\n- Mécanismes d'authentification (clés SSH, jetons d'accès)\n- Éléments à prendre en compte pour l'allocation des ressources et la mise à l'échelle\n\nLorsque vous avez défini votre stratégie et pris les décisions fondamentales, vous pouvez transformer cette planification en un pipeline fonctionnel. Nous allons créer un exemple concret qui démontre ces concepts, en commençant par une application simple à laquelle nous ajouterons progressivement des fonctionnalités de déploiement.\n\n## Mettez en œuvre votre pipeline CD\n\n### Exemple pas à pas\n\nExaminons comment mettre en œuvre un pipeline de déploiement continu de base pour une application web. Nous utiliserons une application HTML simple à titre d'exemple, mais ces principes s'appliquent à tout type d'application. Nous allons également déployer notre application sous la forme d'une image Docker sur une simple machine virtuelle. Cela nous permettra de nous appuyer sur une image organisée avec un minimum de dépendances et de nous assurer qu'aucun prérequis propre à l'environnement n'est introduit involontairement. En travaillant sur une machine virtuelle, nous ne ferons pas appel aux intégrations natives de GitLab, ce qui nous permettra de travailler sur une configuration plus simple, quoique moins évolutive.\n\n#### Prérequis\n\nDans cet exemple, nous allons conteneuriser une application qui s'exécutera sur une machine virtuelle hébergée sur la plateforme d'un fournisseur de services cloud. Nous testerons également cette application localement sur notre machine. Cette liste de prérequis n'est nécessaire que pour notre scénario.\n\n##### Configuration de la machine virtuelle\n\n- Provisionnez une machine virtuelle sur la plateforme de votre fournisseur de services cloud préféré (par exemple, GCP, AWS, Azure).\n- Configurez les règles du réseau pour autoriser l'accès sur les ports 22, 80 et 443.\n- Enregistrez l'adresse IP publique de la machine pour le déploiement.\n\n##### Configuration de l'authentification SSH :\n\n- Générez une paire de clés publique/privée pour la machine.\n- Dans GitLab, accédez à **Paramètres > CI/CD > Variables**.\n- Créez une variable nommée `GITLAB_KEY`.\n- Définissez le type sur « Fichier » (requis pour l'authentification SSH).\n- Collez la clé privée dans le champ Valeur.\n- Définissez une variable USER (utilisateur qui se connecte et exécute les scripts sur votre machine virtuelle).\n\n##### Configuration des variables de déploiement\n\n- Créez des variables pour vos cibles de déploiement :\n  - `STAGING_TARGET` : l'adresse IP/le domaine de votre serveur de préproduction\n  - `PRODUCTION_TARGET` : l'adresse IP/le domaine de votre serveur de production\n\n##### Configuration du développement local\n\n- Installez [Docker](https://about.gitlab.com/fr-fr/blog/what-is-docker-comprehensive-guide/ 'Docker') sur votre machine locale pour tester les déploiements.\n\n##### Accès au registre de conteneurs GitLab\n\n- Localisez votre chemin d'accès au registre :\n  - Accédez à **Déploiement > Registre de conteneurs**.\n- Copiez le chemin d'accès au registre (par exemple, registry.gitlab.com/group/project).\n- Configurez l'authentification :\n  - Accédez au menu **Paramètres > Jetons d'accès**.\n  - Créez un jeton avec un accès au registre.\n  - Expiration du jeton : maximum 1 an.\n  - Enregistrez le jeton de façon sécurisée.\n- Configurez l'accès au registre local :\n\n```shell\ndocker login registry.gitlab.com\n# The username if you are using a PAT is gitlab-ci-token\n# Password: your-access-token\n```\n\n#### 1. Création de votre application\n\nCommencez avec une application web de base. Dans notre exemple, nous utilisons une page HTML simple :\n\n```xml\n\u003C!|||UNTRANSLATED_CONTENT_START|||-- index.html -->\n\u003Chtml>\n  \u003Chead>\n    \u003Cstyle>\n      body {\n        background-color: #171321; /* GitLab dark */\n      }\n    \u003C/style>\n  \u003C/head>\n  \u003Cbody>\n    \u003C!|||UNTRANSLATED_CONTENT_END|||-- Your content here -->\n  \u003C/body>\n\u003C/html>\n```\n\n#### 2. Conteneurisation de votre application\n\nCréez un Dockerfile pour empaqueter votre application :\n\n```text\nFROM nginx:1.26.2\nCOPY index.html /usr/share/nginx/html/index.html\n```\n\nCe Dockerfile :\n\n- Utilise nginx comme image de base pour diffuser du contenu web\n- Copie votre fichier HTML au bon endroit dans la structure du répertoire nginx\n\n#### 3. Configuration de votre pipeline CI/CD\n\nCréez un fichier `.gitlab-ci.yml` pour définir les étapes de votre [pipeline CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ?\") :\n\n```text\nvariables:\n  TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest\n  TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA\n\nstages:\n  - publish\n  - deploy\n```\n\nDécomposons ce code :\n\n`TAG_LATEST` est composé de trois parties :\n\n- `$CI_REGISTRY_IMAGE` est le chemin d'accès au registre des conteneurs de votre projet dans GitLab.\n\nPar exemple : `registry.gitlab.com/your-group/your-project`\n\n- `$CI_COMMIT_REF_NAME` est le nom de votre branche ou tag.\n\nPar exemple, si vous travaillez sur la branche principale : `/main`, et si vous travaillez sur une branche de fonctionnalité : `/feature-login`\n\n- `:latest` est un suffixe fixe.\n\nAinsi, si vous êtes sur la branche principale, `TAG_LATEST` devient `registry.gitlab.com/your-group/your-project/main:latest`.\n\n`TAG_COMMIT` est presque identique, mais au lieu de `:latest`, il utilise : `$CI_COMMIT_SHA`, qui est l'identifiant de commit, par exemple `:abc123def456`.\n\nAinsi, pour ce même commit sur la branche principale, `TAG_COMMIT` devient :` registry.gitlab.com/your-group/your-project/main:abc123def456`.\n\nLa présence de ces deux variables s'explique par le fait que `TAG_LATEST` vous permet facilement de toujours obtenir la version la plus récente. `TAG_COMMIT` vous fournit une version spécifique à laquelle vous pouvez revenir si nécessaire.\n\n#### 4. Publication dans le registre de conteneurs\n\nAjoutez le job de publication à votre pipeline :\n\n```text\npublish:\n  stage: publish\n  image: docker:latest\n  services:\n    - docker:dind\n  script:\n    - docker build -t $TAG_LATEST -t $TAG_COMMIT .\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - docker push $TAG_LATEST\n    - docker push $TAG_COMMIT\n```\n\nCe job :\n\n- Utilise Docker-in-Docker pour compiler des images\n- Crée deux versions avec tag de votre image\n- S'authentifie auprès du registre GitLab\n- Effectue un push des deux versions vers le registre\nMaintenant que vos images sont stockées de façon sécurisée dans le registre, vous pouvez vous concentrer sur leur déploiement dans vos environnements cibles. Commençons par des tests locaux pour valider notre configuration avant de passer aux déploiements dans l'environnement de production.\n\n#### 5. Déploiement dans votre environnement\n\nAvant le déploiement en production, vous pouvez effectuer un test localement. Nous venons de publier notre image dans le dépôt GitLab, pour lequel nous allons effectuer un pull localement. Si vous ne connaissez pas le chemin d'accès exact, accédez à **Déploiement > Registre de conteneurs**. Vous devriez voir une icône permettant de copier le chemin d'accès de votre image à la fin de la ligne pour l'image de conteneur que vous souhaitez tester.\n\n```shell\ndocker login registry.gitlab.com docker run -p 80:80 registry.gitlab.com/your-project-path/main:latest\n```\n\nCe faisant, vous devriez être en mesure d'accéder à votre application localement sur votre adresse localhost via votre navigateur web.\n\nVous pouvez maintenant ajouter un job de déploiement à votre pipeline :\n\n```text\ndeploy:\n  stage: deploy\n  image: alpine:latest\n  script:\n    - chmod 400 $GITLAB_KEY\n    - apk add openssh-client\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - ssh -i $GITLAB_KEY -o StrictHostKeyChecking=no $USER@$TARGET_SERVER       docker pull $TAG_COMMIT &&\n      docker rm -f myapp || true &&\n      docker run -d -p 80:80 --name myapp $TAG_COMMIT\n```\n\nCe job :\n\n- Configure l'accès SSH à votre cible de déploiement\n- Effectue un pull de l'image la plus récente\n- Supprime tout conteneur existant\n- Déploie la nouvelle version\n\n#### 6. Suivi des déploiements\n\nActivez le suivi des déploiements en ajoutant la configuration de l'environnement :\n\n```text\ndeploy:\n  environment:\n    name: production\n    url: https://your-application-url.com ```\n\nCela crée un objet environnement dans la section **Exploitation > Environnements** de GitLab et fournit :\n\n- L'historique de déploiement\n- Le statut de déploiement actuel\n- Un accès rapide à votre application\n\nBien qu'un pipeline d'environnement unique soit un bon point de départ, la plupart des équipes doivent gérer plusieurs environnements, dont des environnements de test et de préproduction. Étoffons notre pipeline pour gérer ce scénario plus réaliste.\n\n#### 7. Configuration de plusieurs environnements\n\nPour obtenir un pipeline plus robuste, configurez les déploiements de préproduction et de production :\n\n```text\nstages:\n  - publish\n  - staging\n  - release\n  - version\n  - production\n\nstaging:\n  stage: staging\n  rules:\n    - if: $CI_COMMIT_BRANCH == \"main\" && $CI_COMMIT_TAG == null\n  environment:\n    name: staging\n    url: https://staging.your-app.com\n  # deployment script here\n\nproduction:\n  stage: production\n  rules:\n    - if: $CI_COMMIT_TAG\n  environment:\n    name: production\n    url: https://your-app.com\n  # deployment script here\n```\n\nCette configuration :\n\n- Effectue un déploiement vers l'environnement de préproduction à partir de votre branche principale\n- Utilise les tags GitLab pour déclencher les déploiements de production\n- Fournit un suivi distinct pour chaque environnement\n\nQue ce soit à cette étape ou à l'étape suivante, nous tirons parti des tags, qui sont une fonctionnalité très utile de GitLab. En créant manuellement un tag dans la section **Code > Tags**, `$CI_COMMIT_TAG` est créé, ce qui nous permet de déclencher des jobs en conséquence.\n\n#### 8. Création de notes de version automatisées\n\nNous utiliserons les fonctionnalités de gestion des versions de GitLab depuis notre pipeline CI/CD. Commencez par mettre à jour les étapes de votre pipeline CI/CD dans `.gitlab-ci.yml` :\n\n```yaml\nstages:\n\n- publish\n- staging\n- release # New stage for releases\n- version\n- production\n```\n\nEnsuite, ajoutez le job de release :\n\n```text\nrelease_job:\n  stage: release\n  image: registry.gitlab.com/gitlab-org/release-cli:latest\n  rules:\n    - if: $CI_COMMIT_TAG                  # Only run when a tag is created\n  script:\n    - echo \"Creating release for $CI_COMMIT_TAG\"\n  release:                                # Release configuration\n    name: 'Release $CI_COMMIT_TAG'\n    description: 'Release created from $CI_COMMIT_TAG'\n    tag_name: '$CI_COMMIT_TAG'           # The tag to create\n    ref: '$CI_COMMIT_TAG'                # The tag to base release on\n```\n\nVous pouvez l'améliorer en ajoutant des liens vers vos images de conteneurs :\n\n```text\nrelease:\n  name: 'Release $CI_COMMIT_TAG'\n  description: 'Release created from $CI_COMMIT_TAG'\n  tag_name: '$CI_COMMIT_TAG'\n  ref: '$CI_COMMIT_TAG'\n  assets:\n    links:\n      - name: 'Container Image'\n        url: '$CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG'\n        link_type: 'image'\n```\n\nPour générer des notes de version automatisées pertinentes :\n\n- Utilisez des commits conventionnels (feat:, fix:, et autres commandes.).\n- Incluez les numéros de ticket (#123).\n- Séparez le sujet du corps par un saut de ligne.\n\nSi vous souhaitez des notes de version personnalisées avec des informations de déploiement :\n\n```text\nrelease_job:\n  script:\n    - |\n      DEPLOY_TIME=$(date '+%Y-%m-%d %H:%M:%S')\n      CHANGES=$(git log $(git describe --tags --abbrev=0 @^)..@ --pretty=format:\"- %s\")\n      cat > release_notes.md \u003C\u003C EOF\n      ## Deployment Info\n      - Deployed on: $DEPLOY_TIME\n      - Environment: Production\n      - Version: $CI_COMMIT_TAG\n\n      ## Changes\n      $CHANGES\n\n      ## Artifacts\n      - Container Image: \\`$CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG\\`\n      EOF\n  release:\n    description: './release_notes.md'\n```\n\nUne fois configurées, les versions sont créées automatiquement lorsque vous ajoutez un tag [Git](https://about.gitlab.com/fr-fr/blog/what-is-git/ \"Qu'est-ce que Git ? \"). Vous pouvez les afficher dans GitLab sous **Déploiement > Releases**.\n\n#### 9. Assemblage\n\nVoici à quoi ressemble notre fichier YAML final :\n\n```text\nvariables:\n  TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest\n  TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA\n  STAGING_TARGET: $STAGING_TARGET    # Set in CI/CD Variables\n  PRODUCTION_TARGET: $PRODUCTION_TARGET  # Set in CI/CD Variables\n\nstages:\n  - publish\n  - staging\n  - release\n  - version\n  - production\n\n# Build and publish to registry\npublish:\n  stage: publish\n  image: docker:latest\n  services:\n    - docker:dind\n  rules:\n    - if: $CI_COMMIT_BRANCH == \"main\" && $CI_COMMIT_TAG == null\n  script:\n    - docker build -t $TAG_LATEST -t $TAG_COMMIT .\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - docker push $TAG_LATEST\n    - docker push $TAG_COMMIT\n\n# Deploy to staging\nstaging:\n  stage: staging\n  image: alpine:latest\n  rules:\n    - if: $CI_COMMIT_BRANCH == \"main\" && $CI_COMMIT_TAG == null\n  script:\n    - chmod 400 $GITLAB_KEY\n    - apk add openssh-client\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - ssh -i $GITLAB_KEY -o StrictHostKeyChecking=no $USER@$STAGING_TARGET \"\n        docker pull $TAG_COMMIT &&\n        docker rm -f myapp || true &&\n        docker run -d -p 80:80 --name myapp $TAG_COMMIT\"\n  environment:\n    name: staging\n    url: http://$STAGING_TARGET\n\n# Create release\nrelease_job:\n  stage: release\n  image: registry.gitlab.com/gitlab-org/release-cli:latest\n  rules:\n    - if: $CI_COMMIT_TAG\n  script:\n    - |\n      DEPLOY_TIME=$(date '+%Y-%m-%d %H:%M:%S')\n      CHANGES=$(git log $(git describe --tags --abbrev=0 @^)..@ --pretty=format:\"- %s\")\n      cat > release_notes.md \u003C\u003C EOF\n      ## Deployment Info\n      - Deployed on: $DEPLOY_TIME\n      - Environment: Production\n      - Version: $CI_COMMIT_TAG\n\n      ## Changes\n      $CHANGES\n\n      ## Artifacts\n      - Container Image: \\`$CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG\\`\n      EOF\n  release:\n    name: 'Release $CI_COMMIT_TAG'\n    description: './release_notes.md'\n    tag_name: '$CI_COMMIT_TAG'\n    ref: '$CI_COMMIT_TAG'\n    assets:\n      links:\n        - name: 'Container Image'\n          url: '$CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG'\n          link_type: 'image'\n\n# Version the image with release tag\nversion_job:\n  stage: version\n  image: docker:latest\n  services:\n    - docker:dind\n  rules:\n    - if: $CI_COMMIT_TAG\n  script:\n    - docker pull $TAG_COMMIT\n    - docker tag $TAG_COMMIT $CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - docker push $CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG\n\n# Deploy to production\nproduction:\n  stage: production\n  image: alpine:latest\n  rules:\n    - if: $CI_COMMIT_TAG\n  script:\n    - chmod 400 $GITLAB_KEY\n    - apk add openssh-client\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - ssh -i $GITLAB_KEY -o StrictHostKeyChecking=no $USER@$PRODUCTION_TARGET \"\n        docker pull $CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG &&\n        docker rm -f myapp || true &&\n        docker run -d -p 80:80 --name myapp $CI_REGISTRY_IMAGE/main:$CI_COMMIT_TAG\"\n  environment:\n    name: production\n    url: http://$PRODUCTION_TARGET\n```\n\nCe pipeline complet :\n\n- Publie des images dans le registre (branche principale)\n- Déploie vers l'environnement de préproduction (branche principale)\n- Crée des versions (lorsqu'un tag est ajouté)\n- Crée des versions d'images avec des tags de version - Déploie dans l'environnement de production (lorsqu'un tag est créé)\n\nPrincipaux avantages :\n\n- Environnement de développement et de test local propre et reproductible\n- Chemin d'accès clair vers les environnements de production avec une structure qui renforce la confiance dans ce qui est déployé\n- Modèle pour se remettre de défaillances inattendues, entre autres\n- Possibilité de développement sur cette base et d'adoption de stratégies de déploiement plus complexes\n\n### Bonnes pratiques\n\nTout au long de la mise en œuvre, respectez les principes suivants :\n\n- Documentez tout, de l'utilisation des variables aux procédures de déploiement.\n- Utilisez les fonctionnalités intégrées de GitLab (environnements, releases, registre).\n- Mettez en œuvre des contrôles d'accès et des mesures de sécurité adaptés.\n- Pensez aux éventuelles défaillances en mettant en place des procédures de restauration robustes.\n- Évitez les redondances dans vos configurations de pipeline en suivant le principe DRY (Don't Repeat Yourself).\n\n## Mise à l'échelle de votre stratégie de déploiement\n\nPour terminer, voici quelques aspects à prendre en compte à mesure que votre stratégie de déploiement continu évolue.\n\n### Mesures de sécurité avancées\n\nAméliorez la sécurité grâce aux fonctionnalités suivantes :\n\n- Environnements protégés avec accès restreint\n- Approbations requises pour les déploiements en production\n- Scanning de sécurité intégré\n- Évaluations automatisées des vulnérabilités\n- Règles de protection des branches pour les modifications liées au déploiement\n\n### Stratégies de livraison progressive\n\nMettez en œuvre des stratégies de déploiement avancées :\n\n- Feature flags pour les déploiements contrôlés\n- Déploiements canari pour l'atténuation des risques\n- Stratégies de déploiement bleu-vert\n- Capacités de test A/B\n- Gestion dynamique de l'environnement\n\n### Surveillance et optimisation\n\nMettez en place des pratiques de surveillance robustes :\n\n- Suivi des mesures de déploiement\n- Mise en place d'un suivi des performances\n- Configuration d'alertes de déploiement\n- Établissement d'objectifs de niveau de service (SLO) en matière de déploiement\n- Optimisation régulière du pipeline\n\n## Pourquoi utiliser GitLab ?\n\nLa plateforme GitLab est idéale pour les workflows de déploiement modernes grâce à ses fonctionnalités de déploiement continu. Elle permet de simplifier les étapes menant du code à la production, en offrant un registre de conteneurs intégré, une gestion de l'environnement et le suivi des déploiements au sein d'une seule interface. Les variables propres à l'environnement, les portes d'approbation de déploiement et les fonctionnalités de restauration de GitLab fournissent la sécurité et le contrôle nécessaires aux déploiements en production, tandis que les fonctionnalités telles que les versions temporaires d'applications et les feature flags offrent des approches de livraison progressive. Ces fonctionnalités de déploiement continu font partie intégrante de la plateforme [DevSecOps](https://about.gitlab.com/fr-fr/topics/devsecops/ \"Qu'est-ce que DevSecOps ?\") complète de GitLab et s'intègrent parfaitement à l'ensemble du cycle de vie de vos logiciels.\n\n## Lancez-vous dès aujourd'hui\n\nOpter pour un déploiement continu est une évolution, pas une révolution. Commencez par les fondamentaux, établissez une base solide et intégrez progressivement des fonctionnalités avancées lorsque les besoins de votre équipe augmentent. GitLab fournit les outils et la flexibilité nécessaires pour vous accompagner à chaque étape de ce parcours, de votre premier déploiement automatisé aux pipelines de livraison complexes et multi-environnements.\n\n> [Essayez GitLab Ultimate gratuitement](https://about.gitlab.com/fr-fr/free-trial/devsecops/) et commencez votre déploiement continu dès aujourd'hui.",[25,26,27,10,28],"CD","CI/CD","features","tutorial","2025-03-24","yml",{},true,"/fr-fr/blog/from-code-to-production-a-guide-to-continuous-deployment-with-gitlab",{"title":16,"description":17,"ogTitle":16,"ogDescription":17,"noIndex":13,"ogImage":21,"ogUrl":35,"ogSiteName":36,"ogType":37,"canonicalUrls":35},"https://about.gitlab.com/blog/from-code-to-production-a-guide-to-continuous-deployment-with-gitlab","https://about.gitlab.com","article","fr-fr/blog/from-code-to-production-a-guide-to-continuous-deployment-with-gitlab",[40,41,27,10,28],"cd","cicd","XDDevWTi8MJZZyJU43-t1w2rvYMr6oRFN61ZftmV1vs",{"data":44},{"logo":45,"freeTrial":50,"sales":55,"login":60,"items":65,"search":374,"minimal":409,"duo":428,"pricingDeployment":438},{"config":46},{"href":47,"dataGaName":48,"dataGaLocation":49},"/fr-fr/","gitlab logo","header",{"text":51,"config":52},"Commencer un essai gratuit",{"href":53,"dataGaName":54,"dataGaLocation":49},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":56,"config":57},"Contacter l'équipe commerciale",{"href":58,"dataGaName":59,"dataGaLocation":49},"/fr-fr/sales/","sales",{"text":61,"config":62},"Connexion",{"href":63,"dataGaName":64,"dataGaLocation":49},"https://gitlab.com/users/sign_in/","sign in",[66,93,189,194,295,355],{"text":67,"config":68,"cards":70},"Plateforme",{"dataNavLevelOne":69},"platform",[71,77,85],{"title":67,"description":72,"link":73},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":74,"config":75},"Découvrir notre plateforme",{"href":76,"dataGaName":69,"dataGaLocation":49},"/fr-fr/platform/",{"title":78,"description":79,"link":80},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":81,"config":82},"Découvrir GitLab Duo",{"href":83,"dataGaName":84,"dataGaLocation":49},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":86,"description":87,"link":88},"Choisir GitLab","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":89,"config":90},"En savoir plus",{"href":91,"dataGaName":92,"dataGaLocation":49},"/fr-fr/why-gitlab/","why gitlab",{"text":94,"left":32,"config":95,"link":97,"lists":101,"footer":171},"Produit",{"dataNavLevelOne":96},"solutions",{"text":98,"config":99},"Voir toutes les solutions",{"href":100,"dataGaName":96,"dataGaLocation":49},"/fr-fr/solutions/",[102,126,149],{"title":103,"description":104,"link":105,"items":110},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":106},{"icon":107,"href":108,"dataGaName":109,"dataGaLocation":49},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[111,114,117,122],{"text":26,"config":112},{"href":113,"dataGaLocation":49,"dataGaName":26},"/fr-fr/solutions/continuous-integration/",{"text":78,"config":115},{"href":83,"dataGaLocation":49,"dataGaName":116},"gitlab duo agent platform - product menu",{"text":118,"config":119},"Gestion du code source",{"href":120,"dataGaLocation":49,"dataGaName":121},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":123,"config":124},"Livraison de logiciels automatisée",{"href":108,"dataGaLocation":49,"dataGaName":125},"Automated software delivery",{"title":127,"description":128,"link":129,"items":134},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":130},{"href":131,"dataGaName":132,"dataGaLocation":49,"icon":133},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[135,139,144],{"text":136,"config":137},"Tests de sécurité des applications",{"href":131,"dataGaName":138,"dataGaLocation":49},"Application security testing",{"text":140,"config":141},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":142,"dataGaLocation":49,"dataGaName":143},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":145,"config":146},"Conformité logicielle",{"href":147,"dataGaName":148,"dataGaLocation":49},"/fr-fr/solutions/software-compliance/","Software Compliance",{"title":150,"link":151,"items":156},"Mesures",{"config":152},{"icon":153,"href":154,"dataGaName":155,"dataGaLocation":49},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[157,161,166],{"text":158,"config":159},"Visibilité et mesures",{"href":154,"dataGaLocation":49,"dataGaName":160},"Visibility and Measurement",{"text":162,"config":163},"Gestion de la chaîne de valeur",{"href":164,"dataGaLocation":49,"dataGaName":165},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":167,"config":168},"Données d'analyse et informations clés",{"href":169,"dataGaLocation":49,"dataGaName":170},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":172,"items":173},"GitLab pour",[174,179,184],{"text":175,"config":176},"Entreprises",{"href":177,"dataGaLocation":49,"dataGaName":178},"/fr-fr/enterprise/","enterprise",{"text":180,"config":181},"PME",{"href":182,"dataGaLocation":49,"dataGaName":183},"/fr-fr/small-business/","small business",{"text":185,"config":186},"Secteur public",{"href":187,"dataGaLocation":49,"dataGaName":188},"/fr-fr/solutions/public-sector/","public sector",{"text":190,"config":191},"Tarifs",{"href":192,"dataGaName":193,"dataGaLocation":49,"dataNavLevelOne":193},"/fr-fr/pricing/","pricing",{"text":195,"config":196,"link":198,"lists":202,"feature":282},"Ressources",{"dataNavLevelOne":197},"resources",{"text":199,"config":200},"Afficher toutes les ressources",{"href":201,"dataGaName":197,"dataGaLocation":49},"/fr-fr/resources/",[203,236,254],{"title":204,"items":205},"Premiers pas",[206,211,216,221,226,231],{"text":207,"config":208},"Installation",{"href":209,"dataGaName":210,"dataGaLocation":49},"/fr-fr/install/","install",{"text":212,"config":213},"Guides de démarrage",{"href":214,"dataGaName":215,"dataGaLocation":49},"/fr-fr/get-started/","quick setup checklists",{"text":217,"config":218},"Apprentissage",{"href":219,"dataGaLocation":49,"dataGaName":220},"https://university.gitlab.com/","learn",{"text":222,"config":223},"Documentation sur le produit",{"href":224,"dataGaName":225,"dataGaLocation":49},"https://docs.gitlab.com/","product documentation",{"text":227,"config":228},"Vidéos sur les bonnes pratiques",{"href":229,"dataGaName":230,"dataGaLocation":49},"/fr-fr/getting-started-videos/","best practice videos",{"text":232,"config":233},"Intégrations",{"href":234,"dataGaName":235,"dataGaLocation":49},"/fr-fr/integrations/","integrations",{"title":237,"items":238},"Découvrir",[239,244,249],{"text":240,"config":241},"Témoignages clients",{"href":242,"dataGaName":243,"dataGaLocation":49},"/fr-fr/customers/","customer success stories",{"text":245,"config":246},"Blog",{"href":247,"dataGaName":248,"dataGaLocation":49},"/fr-fr/blog/","blog",{"text":250,"config":251},"Travail à distance",{"href":252,"dataGaName":253,"dataGaLocation":49},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":255,"items":256},"Connecter",[257,262,267,272,277],{"text":258,"config":259},"Services GitLab",{"href":260,"dataGaName":261,"dataGaLocation":49},"/fr-fr/services/","services",{"text":263,"config":264},"Communauté",{"href":265,"dataGaName":266,"dataGaLocation":49},"/community/","community",{"text":268,"config":269},"Forum",{"href":270,"dataGaName":271,"dataGaLocation":49},"https://forum.gitlab.com/","forum",{"text":273,"config":274},"Événements",{"href":275,"dataGaName":276,"dataGaLocation":49},"/events/","events",{"text":278,"config":279},"Partenaires",{"href":280,"dataGaName":281,"dataGaLocation":49},"/fr-fr/partners/","partners",{"backgroundColor":283,"textColor":284,"text":285,"image":286,"link":290},"#2f2a6b","#fff","L'avenir du développement logiciel. Tendances et perspectives.",{"altText":287,"config":288},"carte promo The Source",{"src":289},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":291,"config":292},"Lire les articles les plus récents",{"href":293,"dataGaName":294,"dataGaLocation":49},"/fr-fr/the-source/","the source",{"text":296,"config":297,"lists":299},"Société",{"dataNavLevelOne":298},"company",[300],{"items":301},[302,307,313,315,320,325,330,335,340,345,350],{"text":303,"config":304},"À propos",{"href":305,"dataGaName":306,"dataGaLocation":49},"/fr-fr/company/","about",{"text":308,"config":309,"footerGa":312},"Carrières",{"href":310,"dataGaName":311,"dataGaLocation":49},"/jobs/","jobs",{"dataGaName":311},{"text":273,"config":314},{"href":275,"dataGaName":276,"dataGaLocation":49},{"text":316,"config":317},"Leadership",{"href":318,"dataGaName":319,"dataGaLocation":49},"/company/team/e-group/","leadership",{"text":321,"config":322},"Équipe",{"href":323,"dataGaName":324,"dataGaLocation":49},"/company/team/","team",{"text":326,"config":327},"Manuel",{"href":328,"dataGaName":329,"dataGaLocation":49},"https://handbook.gitlab.com/","handbook",{"text":331,"config":332},"Relations avec les investisseurs",{"href":333,"dataGaName":334,"dataGaLocation":49},"https://ir.gitlab.com/","investor relations",{"text":336,"config":337},"Centre de confiance",{"href":338,"dataGaName":339,"dataGaLocation":49},"/fr-fr/security/","trust center",{"text":341,"config":342},"Centre pour la transparence de l'IA",{"href":343,"dataGaName":344,"dataGaLocation":49},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":346,"config":347},"Newsletter",{"href":348,"dataGaName":349,"dataGaLocation":49},"/company/contact/#contact-forms","newsletter",{"text":351,"config":352},"Presse",{"href":353,"dataGaName":354,"dataGaLocation":49},"/press/","press",{"text":356,"config":357,"lists":358},"Nous contacter",{"dataNavLevelOne":298},[359],{"items":360},[361,364,369],{"text":56,"config":362},{"href":58,"dataGaName":363,"dataGaLocation":49},"talk to sales",{"text":365,"config":366},"Portail d’assistance",{"href":367,"dataGaName":368,"dataGaLocation":49},"https://support.gitlab.com","support portal",{"text":370,"config":371},"Portail clients GitLab",{"href":372,"dataGaName":373,"dataGaLocation":49},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":375,"login":376,"suggestions":383},"Fermer",{"text":377,"link":378},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":379,"config":380},"gitlab.com",{"href":63,"dataGaName":381,"dataGaLocation":382},"search login","search",{"text":384,"default":385},"Suggestions",[386,388,393,395,400,405],{"text":78,"config":387},{"href":83,"dataGaName":78,"dataGaLocation":382},{"text":389,"config":390},"Suggestions de code (IA)",{"href":391,"dataGaName":392,"dataGaLocation":382},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":26,"config":394},{"href":113,"dataGaName":26,"dataGaLocation":382},{"text":396,"config":397},"GitLab sur AWS",{"href":398,"dataGaName":399,"dataGaLocation":382},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":401,"config":402},"GitLab sur Google Cloud ",{"href":403,"dataGaName":404,"dataGaLocation":382},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":406,"config":407},"Pourquoi utiliser GitLab ?",{"href":91,"dataGaName":408,"dataGaLocation":382},"Why GitLab?",{"freeTrial":410,"mobileIcon":415,"desktopIcon":420,"secondaryButton":423},{"text":411,"config":412},"Commencer votre essai gratuit",{"href":413,"dataGaName":54,"dataGaLocation":414},"https://gitlab.com/-/trials/new/","nav",{"altText":416,"config":417},"Icône GitLab",{"src":418,"dataGaName":419,"dataGaLocation":414},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":416,"config":421},{"src":422,"dataGaName":419,"dataGaLocation":414},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":424,"config":425},"Commencer",{"href":426,"dataGaName":427,"dataGaLocation":414},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/compare/gitlab-vs-github/","get started",{"freeTrial":429,"mobileIcon":434,"desktopIcon":436},{"text":430,"config":431},"En savoir plus sur GitLab Duo",{"href":432,"dataGaName":433,"dataGaLocation":414},"/fr-fr/gitlab-duo/","gitlab duo",{"altText":416,"config":435},{"src":418,"dataGaName":419,"dataGaLocation":414},{"altText":416,"config":437},{"src":422,"dataGaName":419,"dataGaLocation":414},{"freeTrial":439,"mobileIcon":444,"desktopIcon":446},{"text":440,"config":441},"Retour aux tarifs",{"href":192,"dataGaName":442,"dataGaLocation":414,"icon":443},"back to pricing","GoBack",{"altText":416,"config":445},{"src":418,"dataGaName":419,"dataGaLocation":414},{"altText":416,"config":447},{"src":422,"dataGaName":419,"dataGaLocation":414},{"title":449,"button":450,"config":455},"Découvrez comment l'IA agentique transforme la livraison logicielle",{"text":451,"config":452},"Regarder GitLab Transcend maintenant",{"href":453,"dataGaName":454,"dataGaLocation":49},"/fr-fr/events/transcend/virtual/","transcend event",{"layout":456,"icon":457},"release","AiStar",{"data":459},{"text":460,"source":461,"edit":467,"contribute":472,"config":477,"items":482,"minimal":659},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence",{"text":462,"config":463},"Afficher le code source de la page",{"href":464,"dataGaName":465,"dataGaLocation":466},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":468,"config":469},"Modifier cette page",{"href":470,"dataGaName":471,"dataGaLocation":466},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":473,"config":474},"Veuillez contribuer",{"href":475,"dataGaName":476,"dataGaLocation":466},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":478,"facebook":479,"youtube":480,"linkedin":481},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[483,506,560,592,627],{"title":67,"links":484,"subMenu":489},[485],{"text":486,"config":487},"Plateforme DevSecOps",{"href":76,"dataGaName":488,"dataGaLocation":466},"devsecops platform",[490],{"title":190,"links":491},[492,496,501],{"text":493,"config":494},"Voir les forfaits",{"href":192,"dataGaName":495,"dataGaLocation":466},"view plans",{"text":497,"config":498},"Pourquoi choisir GitLab Premium ?",{"href":499,"dataGaName":500,"dataGaLocation":466},"/fr-fr/pricing/premium/","why premium",{"text":502,"config":503},"Pourquoi choisir GitLab Ultimate ?",{"href":504,"dataGaName":505,"dataGaLocation":466},"/fr-fr/pricing/ultimate/","why ultimate",{"title":507,"links":508},"Solutions",[509,514,517,519,524,529,533,536,539,544,546,548,550,555],{"text":510,"config":511},"Transformation digitale",{"href":512,"dataGaName":513,"dataGaLocation":466},"/fr-fr/topics/digital-transformation/","digital transformation",{"text":515,"config":516},"Sécurité et conformité",{"href":131,"dataGaName":138,"dataGaLocation":466},{"text":123,"config":518},{"href":108,"dataGaName":109,"dataGaLocation":466},{"text":520,"config":521},"Développement agile",{"href":522,"dataGaName":523,"dataGaLocation":466},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":525,"config":526},"Transformation cloud",{"href":527,"dataGaName":528,"dataGaLocation":466},"/fr-fr/topics/cloud-native/","cloud transformation",{"text":530,"config":531},"SCM",{"href":120,"dataGaName":532,"dataGaLocation":466},"source code management",{"text":26,"config":534},{"href":113,"dataGaName":535,"dataGaLocation":466},"continuous integration & delivery",{"text":162,"config":537},{"href":164,"dataGaName":538,"dataGaLocation":466},"value stream management",{"text":540,"config":541},"GitOps",{"href":542,"dataGaName":543,"dataGaLocation":466},"/fr-fr/solutions/gitops/","gitops",{"text":175,"config":545},{"href":177,"dataGaName":178,"dataGaLocation":466},{"text":180,"config":547},{"href":182,"dataGaName":183,"dataGaLocation":466},{"text":185,"config":549},{"href":187,"dataGaName":188,"dataGaLocation":466},{"text":551,"config":552},"Formation",{"href":553,"dataGaName":554,"dataGaLocation":466},"/fr-fr/solutions/education/","education",{"text":556,"config":557},"Services financiers",{"href":558,"dataGaName":559,"dataGaLocation":466},"/fr-fr/solutions/finance/","financial services",{"title":195,"links":561},[562,564,567,569,572,574,577,580,582,584,586,588,590],{"text":207,"config":563},{"href":209,"dataGaName":210,"dataGaLocation":466},{"text":565,"config":566},"Guides de démarrage rapide",{"href":214,"dataGaName":215,"dataGaLocation":466},{"text":217,"config":568},{"href":219,"dataGaName":220,"dataGaLocation":466},{"text":222,"config":570},{"href":224,"dataGaName":571,"dataGaLocation":466},"docs",{"text":245,"config":573},{"href":247,"dataGaName":248},{"text":575,"config":576},"Histoires de réussite client",{"href":242,"dataGaLocation":466},{"text":578,"config":579},"Histoires de succès client",{"href":242,"dataGaName":243,"dataGaLocation":466},{"text":250,"config":581},{"href":252,"dataGaName":253,"dataGaLocation":466},{"text":258,"config":583},{"href":260,"dataGaName":261,"dataGaLocation":466},{"text":263,"config":585},{"href":265,"dataGaName":266,"dataGaLocation":466},{"text":268,"config":587},{"href":270,"dataGaName":271,"dataGaLocation":466},{"text":273,"config":589},{"href":275,"dataGaName":276,"dataGaLocation":466},{"text":278,"config":591},{"href":280,"dataGaName":281,"dataGaLocation":466},{"title":296,"links":593},[594,596,599,601,603,605,607,611,616,618,620,622],{"text":303,"config":595},{"href":305,"dataGaName":298,"dataGaLocation":466},{"text":597,"config":598},"Emplois",{"href":310,"dataGaName":311,"dataGaLocation":466},{"text":316,"config":600},{"href":318,"dataGaName":319,"dataGaLocation":466},{"text":321,"config":602},{"href":323,"dataGaName":324,"dataGaLocation":466},{"text":326,"config":604},{"href":328,"dataGaName":329,"dataGaLocation":466},{"text":331,"config":606},{"href":333,"dataGaName":334,"dataGaLocation":466},{"text":608,"config":609},"Sustainability",{"href":610,"dataGaName":608,"dataGaLocation":466},"/sustainability/",{"text":612,"config":613},"Diversité, inclusion et appartenance (DIB)",{"href":614,"dataGaName":615,"dataGaLocation":466},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":336,"config":617},{"href":338,"dataGaName":339,"dataGaLocation":466},{"text":346,"config":619},{"href":348,"dataGaName":349,"dataGaLocation":466},{"text":351,"config":621},{"href":353,"dataGaName":354,"dataGaLocation":466},{"text":623,"config":624},"Déclaration de transparence sur l'esclavage moderne",{"href":625,"dataGaName":626,"dataGaLocation":466},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":356,"links":628},[629,632,637,639,644,649,654],{"text":630,"config":631},"Échanger avec un expert",{"href":58,"dataGaName":59,"dataGaLocation":466},{"text":633,"config":634},"Aide",{"href":635,"dataGaName":636,"dataGaLocation":466},"/support/","get help",{"text":370,"config":638},{"href":372,"dataGaName":373,"dataGaLocation":466},{"text":640,"config":641},"Statut",{"href":642,"dataGaName":643,"dataGaLocation":466},"https://status.gitlab.com/","status",{"text":645,"config":646},"Conditions d'utilisation",{"href":647,"dataGaName":648},"/terms/","terms of use",{"text":650,"config":651},"Déclaration de confidentialité",{"href":652,"dataGaName":653,"dataGaLocation":466},"/fr-fr/privacy/","privacy statement",{"text":655,"config":656},"Préférences en matière de cookies",{"dataGaName":657,"dataGaLocation":466,"id":658,"isOneTrustButton":32},"cookie preferences","ot-sdk-btn",{"items":660},[661,663,666],{"text":645,"config":662},{"href":647,"dataGaName":648,"dataGaLocation":466},{"text":664,"config":665},"Politique de confidentialité",{"href":652,"dataGaName":653,"dataGaLocation":466},{"text":655,"config":667},{"dataGaName":657,"dataGaLocation":466,"id":658,"isOneTrustButton":32},[669,682],{"id":670,"title":19,"body":9,"config":671,"content":673,"description":9,"extension":30,"meta":677,"navigation":32,"path":678,"seo":679,"stem":680,"__hash__":681},"blogAuthors/en-us/blog/authors/benjamin-skierlak.yml",{"template":672},"BlogAuthor",{"name":19,"config":674},{"headshot":675,"ctfId":676},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659471/Blog/Author%20Headshots/Benjamin_Skierlak_headshot.png","Kzp6pkUjPORYYMoeLFPRf",{},"/en-us/blog/authors/benjamin-skierlak",{},"en-us/blog/authors/benjamin-skierlak","RbLU9KGFtah9Juo58JyxfHHYNIU4fyzzOUb5p7-fubo",{"id":683,"title":20,"body":9,"config":684,"content":685,"description":9,"extension":30,"meta":689,"navigation":32,"path":690,"seo":691,"stem":692,"__hash__":693},"blogAuthors/en-us/blog/authors/james-wormwell.yml",{"template":672},{"name":20,"config":686},{"headshot":687,"ctfId":688},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659474/Blog/Author%20Headshots/james_wormwell_headshot.png","CPPijHb0Op5C5aVcvsOEf",{},"/en-us/blog/authors/james-wormwell",{},"en-us/blog/authors/james-wormwell","n6G4XENUWxgqOdCgfG0ECu0Uqj7qOS9zr3Rl8ouF49M",[695,707,722],{"content":696,"config":705},{"title":697,"description":698,"authors":699,"heroImage":701,"body":702,"date":703,"category":10,"tags":704},"Réduction des goulots d'étranglement CI/CD avec GitLab","Découvrez comment les indicateurs de performance des jobs CI/CD et le registre virtuel de conteneurs, actuellement disponible en version bêta, aident les équipes plateforme à identifier rapidement les jobs lents et à simplifier les extractions de conteneurs multi-registres.",[700],"Talia Armato-Helle","https://res.cloudinary.com/about-gitlab-com/image/upload/v1771438388/t6sts5qw4z8561gtlxiq.png","Les ingénieurs plateforme et [DevOps](https://about.gitlab.com/fr-fr/topics/devops/ \"Qu'est-ce que le DevOps ?\") passent trop de temps à rassembler les informations dispersées entre différents outils fragmentés et à gérer une infrastructure qui devrait simplement fonctionner. \n\nDeux nouvelles fonctionnalités GitLab, disponibles actuellement en version bêta, abordent ce problème sous différents angles mais partagent le même objectif : donner aux praticiens un contrôle direct sur l'infrastructure [CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/ \"Qu'est-ce que le CI/CD ?\") dont ils dépendent, sans ajouter un nouvel outil tiers. L'une affiche les données de performance au niveau des jobs directement à l'endroit où vous surveillez les pipelines. L'autre simplifie la façon dont vous extrayez les images de conteneurs à partir de plusieurs registres avec une mise en cache intégrée.\n\nCes deux fonctionnalités sont désormais ouvertes aux retours. Vos commentaires nous aideront à façonner les prochaines versions.\n\n## Indicateurs de performance des jobs CI/CD\n\n* **Niveaux disponibles :** GitLab Premium, GitLab Ultimate\n* **Statut :** Version bêta à disponibilité limitée sur GitLab.com ; disponible sur GitLab Self-Managed et GitLab Dedicated lorsque ClickHouse est configuré\n\nÀ l'heure actuelle, il n'existe aucun moyen simple de savoir quand la durée d'un job commence à augmenter ou quels jobs ralentissent l'exécution de votre pipeline. La plupart des équipes construisent des tableaux de bord personnalisés ou examinent manuellement les logs pour répondre à des questions basiques telles que :\n\n* Quels jobs sont les plus lents ?\n* Où les taux d'échec augmentent-ils ?\n* Quelle étape constitue le véritable goulot d'étranglement ?\n\nLes indicateurs de performance des jobs CI/CD changent cela en ajoutant un nouveau panneau axé sur les jobs à la page d'analyse CI/CD au niveau du projet.\n\nPour chaque job, vous pouvez voir :\n\n* La durée typique (P50, médiane) et la durée dans le pire des cas (P95) du job, pour que vous puissiez rapidement comparer les exécutions normales et les exécutions les plus lentes\n* Le taux d'échec, pour que vous puissiez identifier les jobs fragiles ou instables\n* Le nom et l’étape du job, couvrant par défaut les 30 derniers jours\n\nLe tableau est triable, consultable par nom de job et paginé, ce qui permet aux équipes de plateforme d'obtenir une vue unique pour répondre aux questions qui nécessitaient auparavant des outils distincts ou des rapports personnalisés.\n\n**Essayez cette fonctionnalité**\n\n* Accédez à votre projet et sélectionnez **Analyse \\> Données d'analyse CI/CD**.\n* Recherchez le panneau des indicateurs de performance des jobs CI/CD et triez-les par durée ou par taux d'échec pour trouver vos jobs les plus lents ou les moins fiables.\n\n**Documentation**\n\n* [Analyses CI/CD – Indicateurs de performance des jobs CI/CD](https://docs.gitlab.com/user/analytics/ci_cd_analytics/#cicd-job-performance-metrics)\n\n**À venir**\n\nNous travaillons actuellement sur le regroupement par étape pour que vous puissiez consulter les indicateurs agrégés dans vos étapes de build, de test et de déploiement, et comprendre rapidement où concentrer vos efforts d'optimisation.\n\n**Partagez vos retours :**\n\n* [Epic des indicateurs de performance des jobs CI/CD](https://gitlab.com/groups/gitlab-org/-/work_items/18548)\n\n## Registre virtuel de conteneurs\n\n**Niveau :** GitLab Premium, GitLab Ultimate\n**Statut :** Version bêta, compatible API dans la version 18.9\n\nLa plupart des organisations qui intègrent des images de conteneurs dans les [pipelines CI/CD](https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/ \"Qu'est-ce qu'un pipeline CI/CD ?\") s'appuient sur plusieurs registres : Docker Hub, Harbor, Quay et les registres internes, pour n'en citer que quelques-uns. Gérer l'authentification, la disponibilité et la mise en cache sur l'ensemble de ces registres représente une charge opérationnelle qui ralentit les pipelines et introduit une certaine fragilité.\n\nLe registre virtuel de conteneurs vous permet de créer un point de terminaison GitLab unique qui extrait des données de plusieurs sources de conteneurs en amont avec une mise en cache intégrée.\n\nAu lieu de configurer les identifiants et la disponibilité pour chaque registre dans votre configuration de pipeline, vous pouvez :\n\n* Diriger vos pipelines vers un point de terminaison de registre virtuel GitLab\n* Configurer plusieurs registres en amont (Docker Hub, Harbor, Quay et autres utilisant l'authentification par jeton à longue durée de vie)\n* Laisser GitLab résoudre automatiquement les extractions d'images, avec une mise en cache pull-through pour réduire les coûts de bande passante et améliorer la fiabilité\n\nPour les équipes qui évaluent GitLab comme remplacement de registre de conteneurs, cela comble une lacune critique en matière de capacités. Pour les équipes qui gèrent déjà des worflows de conteneurs multi-registres, cela centralise la gestion des images dans GitLab et réduit les extractions répétées.\n\n**Ce que la version bêta prend en charge aujourd'hui**\n\n* Registres en amont qui utilisent l'authentification par jeton à longue durée de vie : Docker Hub, Harbor, Quay et autres registres compatibles\n* Mise en cache pull-through pour que les images couramment utilisées soient fournies par GitLab après le premier pull\n* Configuration API-first, avec gestion de l'interface utilisateur en cours++\n\nLes registres de fournisseurs cloud qui nécessitent une authentification IAM (tels que Amazon Elastic Container Registry, Google Artifact Registry et Azure Container Registry) sont à l'étude pour de futures itérations.\n\n**Essayez cette fonctionnalité**\n\n* Le registre virtuel de conteneurs est compatible API dans la version 18.9.\n* SaaS (GitLab.com) : demandez l'accès via votre CSM ou en commentant le ticket ci-dessous pour que le feature flag soit activé pour votre groupe.\n* GitLab Self-managed : activez le feature flag et configurez le registre virtuel à l'aide de l'API.\n\n**Documentation**\n\n* [API du registre virtuel de conteneurs](https://docs.gitlab.com/api/container_virtual_registries/)\n* [Extraire des images de conteneurs à partir du registre virtuel](https://docs.gitlab.com/user/packages/virtual_registry/container/#pull-container-images-from-the-virtual-registry)\n\n\n Regardez cette démonstration du registre virtuel de conteneurs disponible en version bêta :\n   \n\n  \u003Ciframe src=\"https://player.vimeo.com/video/1167512082?title=0&amp;byline=0&amp;portrait=0&amp;badge=0&amp;autopause=0&amp;player_id=0&amp;app_id=58479\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write; encrypted-media; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" style=\"position:absolute;top:0;left:0;width:100%;height:100%;\" title=\"20260223_Container Virtual Registry Beta_V1\">\u003C/iframe>\u003C\u003Cscript src=\"https://player.vimeo.com/api/player.js\">\u003C/script>\n\n  \u003Cbr>\u003C/br>\n\n\n\n**Partagez vos retours :**\n\n* [Ticket lié aux retours sur le registre virtuel de conteneurs](https://gitlab.com/gitlab-org/gitlab/-/issues/589630)\n\n## Aidez-nous à construire GitLab\n\nTous les membres de la communauté GitLab sont des contributeurs. Nous avons développé ces versions bêta en fonction des demandes de la communauté.\n\n* **Les indicateurs de performance des jobs CI/CD** ont été proposés par des équipes qui n'avaient aucun moyen facile de voir quand les temps de build commençaient à évoluer dans la mauvaise direction, ou quels jobs nuisaient à la fiabilité du pipeline.\n* **Le registre virtuel de conteneurs** a été proposé par des entreprises clientes qui géraient plusieurs registres et cherchaient à réduire la prolifération d'outils et les coûts de bande passante tout en évaluant GitLab comme registre central.\n\nVos retours façonnent ce que nous créons. Essayez ces versions bêta et partagez votre expérience dans les tickets mentionnés dans cet article.\n\nCet article le premier d'une série de versions bêta Core DevOps que nous prévoyons de mettre en avant. D'autres suivront tout au long de l'année, et nous espérons que vous nous aiderez à les rendre aussi utiles que possible.\n","2026-03-02",[26,10,27],{"featured":32,"template":14,"slug":706},"new-gitlab-metrics-and-registry-features-help-reduce-ci-cd-bottlenecks",{"content":708,"config":720},{"title":709,"description":710,"authors":711,"date":714,"body":715,"heroImage":716,"category":10,"tags":717},"GitLab garantit une disponibilité de 99,9 % avec des crédits de service pour les clients Ultimate","Les clients GitLab Ultimate bénéficient désormais de crédits de service lorsque la disponibilité de la plateforme passe sous le seuil de 99,9 %, garantissant la fiabilité des workflows DevSecOps critiques.",[712,713],"Aathira Nair","Lyle Kozloff","2026-02-18","GitLab garantit désormais son engagement en matière de disponibilité de 99,9 % avec des crédits de service destinés aux clients GitLab Ultimate sur GitLab.com et [GitLab Dedicated](https://about.gitlab.com/dedicated/). Lorsque la disponibilité mensuelle est inférieure à ce seuil, les clients éligibles reçoivent des crédits à appliquer sur leurs prochaines factures. Cet engagement assure à vos workflows DevSecOps la fiabilité dont ils ont besoin.\n\n## Votre confiance, notre priorité\n\nLa livraison logicielle moderne évolue à un rythme soutenu : les équipes effectuent des push de code, ouvrent des merge requests et suivent les tickets en continu tout au long de la journée. Les opérations [Git](https://about.gitlab.com/fr-fr/blog/what-is-git/ \"Qu'est-ce que Git ?\") (push, pull, clone) se produisent des milliers de fois par heure au sein d’équipes distribuées. Lorsque l'une de ces actions essentielles devient indisponible, l'ensemble de votre workflow de livraison de logiciels est impacté.\n\nL'accord de niveau de service (SLA) garantissant une disponibilité de 99,9 % vous assure que votre rythme de développement accéléré ne se heurte pas à des obstacles liés à l’infrastructure. Les crédits de service témoignent de notre responsabilité. Ils lient notre réussite à la fiabilité de la plateforme et alignent nos intérêts sur les vôtres. Nous nous tenons responsables de vos résultats commerciaux, et pas seulement des objectifs de disponibilité.\n\nL'engagement SLA de GitLab couvre les services de base de la plateforme essentiels à vos workflows DevSecOps.\n\nAu lancement, les expériences couvertes sont les suivantes :\n\n* Tickets et merge requests\n* Opérations Git (push, pull, clone via HTTPS et SSH)\n* Opérations du registre de conteneurs\n* Opérations du registre de paquets\n* Requêtes API (limitées aux éléments ci-dessus)\n\nLa liste actualisée des expériences couvertes et exclues est disponible dans le [manuel de GitLab](https://handbook.gitlab.com/handbook/engineering/infrastructure-platforms/service-level-agreement/#covered-experiences).\n\nLa disponibilité du service est mesurée à l'aide d'une surveillance automatisée couvrant plusieurs zones géographiques, offrant une représentation précise de la disponibilité réelle du service telle qu’elle est expérimentée par les clients. Lorsque la disponibilité passe sous le seuil de 99,9 %, les clients sont éligibles à des crédits proportionnels à la durée et à la sévérité de l’indisponibilité.\n\n## Comprendre les minutes d'indisponibilité\n\nLorsque le service de GitLab enregistre une disponibilité dégradée affectant 5 % ou plus des requêtes clients valides pour les expériences couvertes au cours d'une minute donnée, entraînant des erreurs serveur, cette période est appelée une [minute d'indisponibilité](https://handbook.gitlab.com/handbook/engineering/infrastructure-platforms/service-level-agreement/#downtime-minute-definition). Les erreurs serveur sont définies comme des codes de statut HTTP 5xx ou des délais d'expiration de connexion dépassant 30 secondes, tels que déterminés par les systèmes de surveillance internes et externes de GitLab.\n\nLe SLA mesure les défaillances côté serveur, mais certains problèmes peuvent ne pas générer d'erreurs 5xx, comme les bogues applicatifs qui rendent des fonctionnalités inutilisables, les interruptions du traitement des jobs Sidekiq ou les problèmes d'infrastructure qui dégradent les performances sans provoquer des échecs de requêtes.\n\nVoici comment réclamer des crédits de service lorsque les conditions requises sont remplies :\n\n1. Soumettez une demande d'assistance sur support.gitlab.com dans les trente (30) jours suivant la fin du mois affecté.\n\n2. L'équipe de GitLab examine la demande, valide l'indisponibilité et traite le crédit le cas échéant.\n\n3. Les crédits de service seront appliqués sur votre prochaine facture émise.\n\n[Consultez notre manuel](https://handbook.gitlab.com/handbook/engineering/infrastructure-platforms/service-level-agreement/#calculating-monthly-uptime-percentage) pour en savoir plus sur le calcul de la disponibilité mensuelle, les crédits de service offerts le cas échéant et les procédures de réclamation de crédits.\n\nBien que notre système de surveillance soit conçu pour détecter la grande majorité des interruptions de service, si votre expérience ne correspond pas à la disponibilité rapportée, nous vous encourageons à soumettre une demande de crédit de service. GitLab examinera la demande dans sa globalité, y compris les problèmes susceptibles de ne pas être reflétés dans la surveillance automatisée.\n\n## Une fiabilité sur laquelle vous pouvez compter\n\nLe SLA à 99,9 % assorti de crédits de service traduit notre engagement à être une base fiable pour vos workflows de livraison logicielle. Vos équipes comptent sur GitLab pour continuer à livrer des logiciels, et nous sommes là pour vous soutenir.\n\nDes questions sur le SLA ? Contactez votre chargé de compte GitLab ou soumettez une demande via le [support de GitLab](http://support.GitLab.com).","https://res.cloudinary.com/about-gitlab-com/image/upload/v1758812952/yxhgljkwljld0lyizmaz.png",[718,10,719],"performance","DevSecOps",{"featured":32,"template":14,"slug":721},"gitlab-backs-99-9-availability-with-service-credits-for-ultimate-customers",{"content":723,"config":734},{"title":724,"description":725,"authors":726,"heroImage":728,"date":729,"body":730,"category":10,"tags":731},"GitLab Credits : la tarification à l'usage pour GitLab Duo Agent Platform","Découvrez comment GitLab Credits permet de réduire les coûts et offre une flexibilité relative à l'utilisation de l'IA agentique dans le cycle de développement logiciel en entreprise.",[727],"Manav Khurana","https://res.cloudinary.com/about-gitlab-com/image/upload/f_auto,q_auto,c_lfill/v1768314648/gvy4pfqjaeahkoagsjmr.png","2026-01-15","Nous avons créé GitLab Credits car la tarification par siège n’avait pas de sens pour l'IA agentique.\n\nLa tarification par siège crée une fracture entre les équipes d'ingénierie qui ont accès à l'IA et celles qui n'y ont pas accès, ce qui est en totale contradiction avec la manière dont l'IA agentique moderne devrait être utilisée tout au long du cycle de développement logiciel. \n\nAujourd'hui, vous devez acheter un siège pour chaque personne avant qu'elle ne puisse commencer à utiliser l'IA. Bien que cette tarification fonctionne pour les quelques utilisateurs intensifs, elle peut s'avérer trop coûteuse et injuste pour la majorité de l'équipe dont l'utilisation est ponctuelle. C'est pourquoi dans de nombreuses organisations, seule une partie de l'équipe dispose d'un « siège IA ».\n\nPar ailleurs, [GitLab Duo Agent Platform](https://about.gitlab.com/fr-fr/blog/gitlab-duo-agent-platform-is-generally-available/) diffère de GitLab Duo Pro, de GitLab Duo Enterprise et des autres outils de développement d'IA sur le marché. Les agents et les flows agentiques peuvent être utilisés par votre équipe lorsque celle-ci a besoin d'une assistance IA et déclenchés par des événements [SDLC](https://about.gitlab.com/fr-fr/blog/what-is-sdlc/) qui s'exécutent en arrière-plan. Avec GitLab Duo Agent Platform, l'IA agentique n'est plus uniquement liée aux sièges utilisateurs.\n\nGitLab Credits, notre nouvelle monnaie virtuelle pour la tarification à l'usage, permet de pallier ces différences d'utilisation, à commencer par GitLab Duo Agent Platform. Chaque membre de votre organisation avec un compte GitLab (Premium ou Ultimate) peut désormais utiliser les fonctionnalités d'IA agentique sans que vous ayez à payer pour un siège IA, que celles-ci soient utilisées directement ou configurées comme agents en arrière-plan. \n\n## Fonctionnement de GitLab Credits\n\nLes crédits sont mutualisés dans l'ensemble de votre organisation. GitLab Duo Agent Platform, y compris l'usage synchrone et asynchrone des agents et des flows agentiques, requiert des GitLab Credits.\n\nLes fonctionnalités suivantes consomment des GitLab Credits :\n\n* Les [agents de base](https://docs.gitlab.com/user/duo_agent_platform/agents/foundational_agents/) tels que l'agent GitLab Duo Security Analyst,  l'agent GitLab Duo Planner et l'agent GitLab Duo Data Analyst  \n\n* Les [flows de base](https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/) tels que le flow « revue de code », le flow flow « développeur » et le flow « correction de pipelines CI/CD »  \n\n* Les [agents externes](https://docs.gitlab.com/user/duo_agent_platform/agents/external/) tels qu'Anthropic Claude Code et OpenAI Codex  \n\n* Les agents et les flows personnalisés que vous créez et publiez dans votre [Catalogue d'IA](https://docs.gitlab.com/user/duo_agent_platform/ai_catalog/)  \n\n* [Agentic Chat](https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/) dans l'interface de GitLab et dans l'[IDE](https://about.gitlab.com/fr-fr/blog/what-is-an-ide/).\n\n**Remarque :** les agents externes sont disponibles gratuitement dans la version 18.8 et ne consomment pas de GitLab Credits. Nous présenterons la tarification le mois prochain, lors de la sortie de la version GitLab 18.9. Les flow personnalisés sont actuellement en version bêta et ne consomment pas de GitLab Credits. \n\nLe nombre de crédits utilisés est basé sur le nombre de requêtes agentiques effectuées par les grands modèles de langage ([LLM](https://about.gitlab.com/fr-fr/blog/what-is-a-large-language-model-llm/)) (plus de détails [ici](https://docs.gitlab.com/subscriptions/gitlab_credits/#models)). À mesure que le nombre de LLM disponibles augmentera, nous les certifierons pour une utilisation avec GitLab Duo Agent Platform et les ajouterons à cette liste afin d'offrir aux utilisateurs une vision transparente de leur consommation.\n\nLe nombre total de crédits est calculé à la fin du mois en fonction de l'utilisation réelle. Ce modèle compense également automatiquement l'usage des utilisateurs intensifs par rapport à celui des utilisateurs occasionnels, afin de réduire ainsi efficacement le coût total de l'IA par personne (par rapport au paiement par siège pour chaque personne). \n\nPar souci de simplicité, chaque crédit a un prix catalogue **à la demande** de 1 $. Vous pouvez utiliser GitLab Duo Agent Platform sans aucun engagement, et l'utilisation est facturée mensuellement (à la fin de chaque mois). Pour les clients Enterprise qui souscrivent à des **engagements annuels**, nous proposons des remises sur volume pour les crédits mensuels. \n\nDans le cadre d'une promotion à durée limitée[*](#notes), tous les clients GitLab avec un abonnement GitLab Premium et GitLab Ultimate actif recevront automatiquement **12 $ et 24 $ de crédits inclus par utilisateur**, respectivement. Ces crédits seront renouvelés chaque mois jusqu'à la fin de la période promotionnelle et permettront à votre équipe d'accéder à toutes les fonctionnalités de GitLab Duo Agent Platform sans frais supplémentaires. Lorsque vous acceptez nos conditions de facturation, toute utilisation supérieure à ces crédits inclus sera facturée via des crédits mensuels engagés ou des crédits à la demande.\n\n## Gouvernance des coûts avec GitLab Credits\n\n**Dimensionnement de GitLab Credits :** votre équipe commerciale dispose d'un calculateur de dimensionnement dans le cadre de la disponibilité générale de GitLab Duo Agent Platform, pour estimer le nombre de crédits dont vous aurez besoin chaque mois. Ce calculateur a été conçu avec des modèles d'utilisation que nous avons observés pendant la période bêta. De plus, en tant que client existant ou nouveau client, vous pouvez demander un essai gratuit pour confirmer votre utilisation réelle estimée. \n\n**Visibilité de l'utilisation :** avec la version 18.8, vous disposez d'informations détaillées sur l'utilisation via deux tableaux de bord complémentaires : un disponible dans le portail clients de GitLab pour les responsables de facturation à des fins de supervision financière, et l'autre intégré au produit pour les administrateurs à des fins de surveillance opérationnelle. Les deux fournissent une attribution de l'utilisation, des répartitions de coûts et des tendances historiques afin que vous sachiez toujours exactement comment vos crédits sont consommés. Si vous suivez une pratique de refacturation interne, vous pourrez utiliser les cumuls au niveau des projets et des groupes pour les allocations de coûts.  \n\n**Contrôles d'utilisation :** vous pouvez activer ou désactiver l'accès à GitLab Duo Agent Platform pour des équipes ou des projets spécifiques afin de garantir que seule l'utilisation approuvée peut être comptabilisée dans vos crédits. Nous prévoyons également d'ajouter des contrôles au niveau utilisateur peu après la disponibilité générale pour vous aider à gérer l'usage des fonctionnalités de GitLab Duo Agent Platform et des crédits.\n\n**Notifications automatiques d'utilisation :** nous vous tiendrons informé de manière proactive de votre utilisation des crédits via des alertes par e-mail lorsque vous atteindrez 50 %, 80 % et 100 % de vos crédits mensuels engagés, afin que vous ayez le temps d'ajuster votre utilisation, d'acheter des engagements supplémentaires ou de planifier la facturation à la demande.\n\n## Mise à niveau de la tarification par siège GitLab Duo Pro/GitLab Enterprise vers GitLab Credits pour GitLab Duo Agent Platform\n\nSi vous avez acheté et utilisez GitLab Duo Pro et GitLab Duo Enterprise, vous pouvez continuer à utiliser ces fonctionnalités comme options prises en charge. Vous pouvez passer à tout moment à GitLab Duo Agent Platform, afin d'utiliser la version « classique » de GitLab Duo, et accéder à de nouvelles fonctionnalités telles que l'Agentic Chat, des agents de base supplémentaires, des agents et des flows personnalisés, des agents externes et plus encore. \n\nAu moment de la mise à niveau, nous transférerons votre investissement dans les sièges de GitLab Duo Pro et GitLab Duo Enterprise vers GitLab Credits pour GitLab Duo Agent Platform. Le montant restant des engagements de sièges sera échangé contre des GitLab Credits mensuels avec des remises basées sur le volume. Les crédits mensuels pourront ensuite être partagés entre tous les membres de votre organisation que vous autorisez, et non plus seulement les utilisateurs qui disposaient de sièges GitLab Duo assignés auparavant. \n\n## Comparaison concurrentielle : GitLab Credits vs tarification par siège \n\n| Avantage | GitLab Credits | Tarification par siège |\n| ----- | ----- | ----- |\n| **L'IA pour tous** | Chaque membre d'équipe approuvé dispose d'un accès IA dès le premier jour | Crée des « nantis » et des « non-nantis » de l'IA, impose un rationnement des sièges |\n| **Aucun investissement initial**  | Commencez modestement avec les crédits inclus, augmentez l'engagement au fur et à mesure que le ROI devient clair | Vous devez acheter des sièges à l'avance avant de prouver leur valeur |\n| **Payez ce que vous utilisez** | Seul le travail d'IA réellement effectué au-delà du niveau inclus est facturé | Vous payez par siège quelle que soit l'utilisation réelle |\n| **Dépenses optimisées** | Le pool de crédits partagé vous permet d'équilibrer les utilisateurs intensifs avec les utilisateurs occasionnels | Vous devez payer pour les utilisateurs occasionnels et les dépassements pour les requêtes premium des utilisateurs intensifs |\n| **Visibilité détaillée** | Tableaux de bord d'utilisation avec attribution détaillée et tendances historiques | Aperçu limité des utilisateurs qui génèrent de la valeur |\n| **Contrôles de coûts granulaires** | Déterminez les utilisateurs, des alertes proactives et des contrôles budgétaires à venir pour limiter l'usage | Limitez qui obtient un siège pour contrôler les coûts |\n| **Flexibilité de dimensionnement**  | Calculateur pour estimer les crédits mensuels, avec plus de remises unitaires en volume | Comptez qui obtient un siège multiplié par le prix par siège |\n| **Contrats et facturation simplifiés** | Un seul SKU et une facture couvre toutes les fonctionnalités agentiques dans le cycle de vie DevSecOps | Plusieurs licences IA requises pour différents outils tiers |\n\n## Configuration\n\n1. **Pour les clients GitLab Premium et GitLab Ultimate existants** : avec la disponibilité générale, GitLab Duo Agent Platform sera disponible pour les clients disposant de licences GitLab Premium et GitLab Ultimate actives[**](#notes). Les clients GitLab.com SaaS y auront accès automatiquement. Les clients GitLab Self-Managed y auront accès lorsqu'ils passeront à la version GitLab 18.8 (avec la disponibilité générale prévue de GitLab Duo Agent Platform). Les clients [GitLab Dedicated](https://about.gitlab.com/fr-fr/dedicated/) seront mis à niveau vers GitLab 18.8 pendant leur fenêtre de maintenance programmée en février et pourront alors utiliser GitLab Duo Agent Platform.\n      \n2. **Activez GitLab Duo** : assurez-vous que GitLab Duo Agent Platform est activé dans les paramètres de votre espace de nommage.  \n\n3. **Commencez à explorer** : utilisez vos GitLab Credits mensuels inclus pour essayer les fonctionnalités de GitLab Duo Agent Platform.   \n\n4. **Au-delà des crédits inclus :** vous pourrez accepter GitLab Credits pour une utilisation étendue au-delà des crédits inclus au prix catalogue à la demande. Pour des remises sur volume avec engagement, veuillez [nous contacter](https://about.gitlab.com/fr-fr/sales/) pour obtenir un devis pour votre niveau d'utilisation spécifique. \n\nConsultez notre [documentation](https://docs.gitlab.com/user/duo_agent_platform/) pour en savoir plus sur la prise en main de GitLab Duo Agent Platform.\n\n## Remarques\n\n\\* Ces crédits promotionnels inclus sont disponibles pour une durée limitée lors de la disponibilité générale, et peuvent être modifiés à la discrétion de GitLab.\n\n** Exclut GitLab Duo avec Amazon Q et GitLab Dedicated pour les clients \ngouvernementaux.\n\n> Pour en savoir plus sur GitLab Duo Agent Platform et toutes les façons dont l'IA agentique peut transformer le travail de votre équipe, [consultez notre page GitLab Duo Agent Platform](https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/). Si vous êtes un client GitLab existant, contactez votre gestionnaire de compte GitLab ou votre partenaire pour planifier une démonstration de nos fonctionnalités de plateforme.\n\n## FAQ sur GitLab Credits\n\n**1\\. Qu'est-ce que GitLab Credits et pourquoi GitLab les a-t-il introduits ?**\n\nGitLab Credits est une nouvelle monnaie virtuelle pour les fonctionnalités GitLab basées sur l'utilisation, à commencer par GitLab Duo Agent Platform. GitLab a introduit ce modèle car la tarification par siège forçait les organisations à rationner l'accès à l'IA au sein des équipes d'ingénierie, et l'utilisation de GitLab Duo Agent Platform n'est pas uniquement liée aux sièges. Les crédits sont mutualisés dans l'ensemble de votre organisation, vous permettant de donner à chaque membre de l'équipe un accès aux fonctionnalités d'IA, ou de configurer des workflows agentiques en arrière-plan, sans nécessiter l'achat de sièges individuels à l'avance.\n\n**2\\. Comment fonctionne la consommation de crédits ?**\n\nLes crédits sont déduits en fonction du nombre de requêtes agentiques effectuées, avec des taux différents selon le LLM utilisé. Par exemple, vous obtenez deux requêtes de modèle par crédit pour Claude-sonnet-4.5 (le modèle par défaut pour la plupart des fonctionnalités), et 20 requêtes par crédit pour des modèles comme gpt-5-mini ou claude-3-haiku. \n\n**3\\. Qu'est-ce qui est inclus pour les clients GitLab Premium et GitLab Ultimate existants ?**\n\nDans le cadre d'une promotion à durée limitée, les clients disposant d'abonnements GitLab Premium et GitLab Ultimate actifs reçoivent automatiquement des crédits inclus gratuitement parallèlement à la version de disponibilité générale de GitLab Duo Agent Platform dans GitLab 18.8 : \n\n* 12 $ de crédits par utilisateur par mois pour GitLab Premium  \n\n* 24 $ de crédits par utilisateur par mois pour GitLab Ultimate\n\nLes crédits inclus sont au niveau utilisateur, se renouvellent mensuellement et permettent l'accès à toutes les fonctionnalités de GitLab Duo Agent Platform sans frais supplémentaires. Toute utilisation supplémentaire sera facturée séparément. Ces crédits promotionnels inclus sont disponibles pour une durée limitée après la disponibilité générale, et peuvent être modifiés  à la discrétion de GitLab.\n\n**4\\. Comment puis-je contrôler et surveiller l'utilisation des crédits ?**\n\nGitLab fournit plusieurs outils de gouvernance : tableaux de bord d'utilisation détaillés dans le portail clients et au sein du produit, possibilité d'activer et de désactiver l'accès pour des équipes ou des projets spécifiques, contrôles au niveau utilisateur à venir, et alertes e-mail automatisées à 50 %, 80 % et 100 % des crédits mensuels engagés. Nous prévoyons également de proposer un calculateur de dimensionnement pour estimer vos besoins mensuels en crédits.\n\n**5\\. Comment puis-je commencer à utiliser GitLab Duo Agent Platform ?**\n\nUne fois en disponibilité générale, pour les clients GitLab Premium et GitLab Ultimate existants, l'accès est automatique sur GitLab.com SaaS. Les clients Self-Managed obtiennent l'accès lors de la mise à niveau vers GitLab 18.8 avec la disponibilité générale prévue de GitLab Duo Agent Platform. Activez simplement GitLab Duo Agent Platform dans les paramètres de votre espace de nommage et commencez à explorer GitLab Duo Agent Platform en utilisant vos crédits mensuels inclus. Pour une utilisation au-delà des crédits inclus, vous pouvez accepter la facturation à la demande ou contacter GitLab pour des remises sur volume avec engagements annuels.\n\n*Cet article de blog contient des « déclarations prospectives » au sens de la section 27A du Securities Act de 1933, tel que modifié, et de la section 21E du Securities Exchange Act de 1934. Bien que nous croyions que les attentes reflétées dans ces déclarations sont raisonnables, elles sont soumises à des risques, incertitudes, hypothèses et autres facteurs connus et inconnus qui peuvent entraîner des résultats ou des issues réels sensiblement différents. Des informations supplémentaires sur ces risques et autres facteurs sont incluses sous la rubrique « Facteurs de risque » dans nos dépôts auprès de la SEC. Nous ne nous engageons à mettre à jour ou à réviser ces déclarations après la date de cet article de blog, sauf si la loi l'exige.*",[732,10,733],"AI/ML","news",{"featured":13,"template":14,"slug":735},"introducing-gitlab-credits",{"promotions":737},[738,752,764],{"id":739,"categories":740,"header":742,"text":743,"button":744,"image":749},"ai-modernization",[741],"ai-ml","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":745,"config":746},"Get your AI maturity score",{"href":747,"dataGaName":748,"dataGaLocation":248},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":750},{"src":751},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":753,"categories":754,"header":756,"text":743,"button":757,"image":761},"devops-modernization",[10,755],"devsecops","Are you just managing tools or shipping innovation?",{"text":758,"config":759},"Get your DevOps maturity score",{"href":760,"dataGaName":748,"dataGaLocation":248},"/assessments/devops-modernization-assessment/",{"config":762},{"src":763},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":765,"categories":766,"header":768,"text":743,"button":769,"image":773},"security-modernization",[767],"security","Are you trading speed for security?",{"text":770,"config":771},"Get your security maturity score",{"href":772,"dataGaName":748,"dataGaLocation":248},"/assessments/security-modernization-assessment/",{"config":774},{"src":775},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"header":777,"blurb":778,"button":779,"secondaryButton":783},"Commencez à développer plus rapidement dès aujourd'hui","Découvrez ce que votre équipe peut accomplir avec la plateforme d'orchestration intelligente pour le DevSecOps.\n",{"text":51,"config":780},{"href":781,"dataGaName":54,"dataGaLocation":782},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":56,"config":784},{"href":58,"dataGaName":59,"dataGaLocation":782},1772652100749]