[{"data":1,"prerenderedAt":1843},["ShallowReactive",2],{"/fr-fr/blog/jenkins-to-gitlab-migration-made-easy":3,"navigation-fr-fr":1060,"banner-fr-fr":1494,"footer-fr-fr":1502,"blog-post-authors-fr-fr-Fernando Diaz":1739,"blog-related-posts-fr-fr-jenkins-to-gitlab-migration-made-easy":1754,"blog-promotions-fr-fr":1780,"next-steps-fr-fr":1834},{"id":4,"title":5,"authors":6,"body":8,"category":1039,"date":1040,"description":1041,"extension":1042,"externalUrl":1043,"faq":1043,"featured":1044,"heroImage":1045,"meta":1046,"navigation":1044,"path":1047,"seo":1048,"slug":1053,"stem":1054,"tags":1055,"template":1057,"updatedDate":1058,"__hash__":1059},"blogPosts/fr-fr/blog/jenkins-to-gitlab-migration-made-easy.md","Migrer de Jenkins vers GitLab : le guide complet",[7],"Fernando Diaz",{"type":9,"value":10,"toc":1025},"minimark",[11,15,37,53,70,73,84,89,92,106,109,114,117,181,184,188,191,241,244,248,251,290,299,303,306,309,374,385,400,423,428,437,457,464,553,556,568,571,579,582,591,595,598,601,605,608,647,655,658,669,672,678,687,697,702,712,721,729,737,744,752,760,767,773,778,786,791,799,803,816,824,853,861,864,872,875,886,897,908,917,921,924,957,966,970,979,982],[12,13,14],"p",{},"GitLab est la plateforme DevSecOps alimentée par l'IA la plus complète. En effet, GitLab fournit toutes les fonctionnalités dont vous avez besoin pour planifier, développer et livrer des logiciels sécurisés plus rapidement, le tout au sein d'une seule et même plateforme.\nLes plateformes comme GitLab éliminent les difficultés et les défis liés à l'intégration de multiples outils (approche DevOps DIY) pour gérer au mieux le cycle de vie du développement logiciel (SDLC). À l'inverse, Jenkins n'étant pas une plateforme, des outils supplémentaires sont nécessaires pour compléter le SDLC. Cette approche DevOps DIY introduit une complexité supplémentaire liée à la chaîne d'outils, et génère un certain nombre d'inconvénients comme :",[16,17,18,22,25,28,31,34],"ul",{},[19,20,21],"li",{},"La nécessité d'une assistance personnalisée pour l'intégration et l'orchestration des outils",[19,23,24],{},"La difficulté à tenir à jour/mettre à niveau/sécuriser des outils disparates",[19,26,27],{},"L'impossibilité de mesurer correctement la transformation organisationnelle",[19,29,30],{},"Une mauvaise expérience des équipes de développement - Des coûts supplémentaires en lien avec la gestion, les délais et le budget",[19,32,33],{},"Une perte de productivité",[19,35,36],{},"Un changement de contexte et une inefficacité en terme de collaboration",[38,39,40],"center",{},[41,42,43,44,43,49],"figure",{},"\n   ",[45,46],"img",{"src":47,"alt":48},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752175993/Blog/ikr97sr9jclddeqdg7ew.png","Import project selection",[50,51,52],"figcaption",{},"DevOps DIY versus plateforme DevSecOps",[12,54,55,56,63,64,69],{},"Pour ces raisons, de nombreuses équipes de développement utilisant Jenkins envisagent de migrer vers une plateforme ",[57,58,62],"a",{"href":59,"rel":60,"title":61},"https://about.gitlab.com/fr-fr/topics/devsecops/",[],"Qu'est-ce que l'approche DevSecOps ?","DevSecOps"," complète. Si vous recherchez une plateforme puissante, fiable et sécurisée, GitLab est votre meilleure option ! GitLab propose une version gratuite ainsi que différents niveaux d'abonnement en fonction des besoins de votre entreprise. Pour en savoir plus sur nos offres et fonctionnalités, consultez notre ",[57,65,68],{"href":66,"rel":67},"https://about.gitlab.com/fr-fr/pricing/",[],"page tarifaire",".",[12,71,72],{},"Découvrez dans cet article de blog :",[16,74,75,78,81],{},[19,76,77],{},"Comment planifier une migration",[19,79,80],{},"Comment migrer des dépôts depuis d'autres outils de gestion du code source (SCM) vers GitLab",[19,82,83],{},"Comment migrer des pipelines CI/CD de Jenkins vers GitLab",[85,86,88],"h2",{"id":87},"comment-planifier-une-migration-de-jenkins-vers-gitlab","Comment planifier une migration de Jenkins vers GitLab ?",[12,90,91],{},"Avant d'initier la migration de vos dépôts hébergés sur un autre outil vers GitLab CI/CD, vous devez élaborer un plan de migration. Cette étape technique est importante et vous permet de définir clairement vos attentes. Les outils CI/CD diffèrent par leur approche, leur structure et leurs spécificités techniques. Par conséquent, les migrations ne sont pas de simples transferts directs des données.\nUn plan de migration offre les avantages suivants :",[16,93,94,97,100,103],{},[19,95,96],{},"Il définit et communique une vision claire de vos objectifs de migration, ce qui aide les personnes impliquées à comprendre le but de cette opération. - Il vous permet de vous assurer d’obtenir l'aval des équipes de direction concernées pour faciliter cette démarche.",[19,98,99],{},"Il permet d'expliquer aux utilisateurs les changements à venir.",[19,101,102],{},"Il permet de trouver des moyens de séquencer ou de retarder certaines étapes de la migration pour éviter l'échec de la migration ou une migration partielle.",[19,104,105],{},"Il documente les avantages des améliorations apportées par GitLab CI/CD et met à jour votre mise en œuvre à chaque étape de la migration.",[12,107,108],{},"Un plan de migration vous aide à mettre en place un processus fluide permettant de migrer progressivement vers GitLab, avec un minimum de perturbations. Il peut s'agir d’exécuter simultanément Jenkins et GitLab, tandis que certains projets sont transférés de Jenkins vers GitLab.",[110,111,113],"h3",{"id":112},"définissez-un-processus-de-gestion-du-changement","Définissez un processus de gestion du changement",[12,115,116],{},"Il se peut que les développeurs, opérateurs informatiques, administrateurs cloud, équipes en charge de la sécurité, ainsi que les ingénieurs qualité n'aient pas d'expérience avec GitLab et ne sachent pas pourquoi vous ou votre équipe de direction avez choisi de réaliser cette migration. C'est pourquoi votre plan de migration doit inclure un processus efficace de gestion du changement.\nLes personnes impactées par cette migration doivent savoir :",[16,118,119,126,132,138,159],{},[19,120,121,125],{},[122,123,124],"strong",{},"Pourquoi"," ce changement est nécessaire",[19,127,128,131],{},[122,129,130],{},"À quoi"," ressemblera le futur système",[19,133,134,137],{},[122,135,136],{},"Comment"," l'entreprise prévoit d'atteindre cet objectif",[19,139,140,143,144,147,148,154,155,158],{},[122,141,142],{},"Vers qui"," se tourner pour obtenir plus d'informations ou de l'aide\nÀ cette fin, vous devez réaliser les étapes suivantes afin de gérer efficacement le changement au sein des différentes équipes fonctionnelles : - ",[122,145,146],{},"Analysez l'état actuel"," : documentez les processus existants. Collectez des indicateurs qui serviront de base de référence. Identifiez ce qui fonctionne ou non avec l'",[57,149,153],{"href":150,"rel":151,"title":152},"https://about.gitlab.com/fr-fr/topics/ci-cd/",[],"Qu'est-ce que le CI/CD ?","approche CI/CD"," en interrogeant certains membres de votre équipe. Documentez les défis que vous devez relever, et ce d'un point de vue quantitatif et qualitatif. Comme vous allez devoir expliquer les raisons de ce changement et votre vision, plus vous définirez clairement les problématiques que vous espérez résoudre, plus il vous sera facile d'obtenir l'adhésion de tous. - ",[122,156,157],{},"Établissez une vision"," : maintenant que vous avez décrit les points de friction actuels quantitativement avec des indicateurs de référence et qualitativement (en vous basant sur les retours des membres de votre équipe), communiquez une vision de l'état futur. Expliquez pourquoi c'est important (en vous référant aux indicateurs de réussite de votre entreprise) et partagez l’état actuel de la situation et les résultats attendus. Renforcez ce message par le biais de différents canaux de communication : groupes de discussion, réunions rassemblant l'ensemble des acteurs de l'entreprise, ou encore notifications par e-mail.",[19,160,161,164,165,170,171,176,177,180],{},[122,162,163],{},"Formez les collaborateurs"," : investissez dans une ",[57,166,169],{"href":167,"rel":168},"https://university.gitlab.com/pages/ci-cd-training/",[],"formation sur GitLab CI/CD"," dispensée par un expert GitLab. Mesurez l'acquisition et la mémorisation des connaissances à l'aide des ",[57,172,175],{"href":173,"rel":174},"https://levelup.edcast.com/pages/certifications",[],"certifications GitLab",". - ",[122,178,179],{},"Communiquez la roadmap et les ressources"," : partagez avec les membres de votre équipe le calendrier prévu de la migration et les ressources mises à leur disposition pour faciliter la transition. Mentionnez également les ressources communautaires (groupes de discussion, forums), afin que votre équipe puisse poser des questions et obtenir de l'aide. Créez un système qui récompense les équipes qui effectuent rapidement cette transition, et encouragez-les à partager leur expérience avec d'autres équipes similaires au sein de l'entreprise.",[12,182,183],{},"Si vous mettez en place ces éléments dès le début de cette transition, cela sera de bon augure pour la réussite de votre migration.",[110,185,187],{"id":186},"définissez-des-objectifs-de-migration","Définissez des objectifs de migration",[12,189,190],{},"Avant d'effectuer votre migration, vous devez avoir une bonne compréhension de vos objectifs et de la façon de les atteindre. Voici par exemple certaines des questions auxquelles vous devez pouvoir répondre :",[16,192,193,196,199,202,205,208,211,214,217,220,223,226,229,232,235,238],{},[19,194,195],{},"Quel est votre calendrier de migration ?",[19,197,198],{},"Quelle est la configuration actuelle de votre serveur Jenkins ?",[19,200,201],{},"Combien de projets sont concernés par la migration ?",[19,203,204],{},"Quel est le degré de complexité de votre pipeline ?",[19,206,207],{},"Nécessite-t-il des dépendances externes, plusieurs déclencheurs pour s'exécuter, exécute-t-il plusieurs processus en parallèle pour compiler le code, etc. ?",[19,209,210],{},"Comment/où déployez-vous votre code ?",[19,212,213],{},"Quel est le processus de revue/sortie des nouvelles versions et de déploiement du code ?",[19,215,216],{},"Est-il intégré dans Jenkins ou dans un workflow distinct déclenché par Jenkins ?",[19,218,219],{},"Quels artefacts de compilation ou binaires sont nécessaires au succès du pipeline ?",[19,221,222],{},"Quels plug-ins sont utilisés par les jobs dans Jenkins aujourd'hui ?",[19,224,225],{},"Quel logiciel est installé sur les agents Jenkins ?",[19,227,228],{},"Quelle solution de gestion du code source (SCM) utilisez-vous actuellement ?",[19,230,231],{},"Utilisez-vous des bibliothèques partagées dans vos jobs Jenkins ?",[19,233,234],{},"Quelle méthode d'authentification est utilisée pour Jenkins (Basic Authentication, LDAP/AD, SSO) ?",[19,236,237],{},"Y a-t-il d'autres projets auxquels vous devez accéder depuis votre pipeline ?",[19,239,240],{},"Des identifiants de connexion dans Jenkins sont-ils utilisés pour accéder à des services externes ?",[12,242,243],{},"En répondant à ces questions, vous saurez comment procéder à la migration, combien de temps durera cette opération et par où commencer. Une fois que vous avez élaboré un plan et que vous êtes conscient des attentes et des écueils possibles, vous pouvez commencer votre processus de migration.",[85,245,247],{"id":246},"prérequis-à-la-migration","Prérequis à la migration",[12,249,250],{},"Une fois que vous avez créé votre plan de migration et répondu à toutes les attentes associées, vous pouvez commencer à configurer GitLab.\nVoici certains des prérequis suggérés pour la migration :",[16,252,253,261,276,284,287],{},[19,254,255,256,69],{},"Familiarisez-vous avec GitLab et découvrez les ",[57,257,260],{"href":258,"rel":259},"https://docs.gitlab.com/ci/",[],"fonctionnalités clés de GitLab CI/CD",[19,262,263,264,269,270,275],{},"Suivez des tutoriels pour créer votre premier ",[57,265,268],{"href":266,"rel":267},"https://docs.gitlab.com/ci/quick_start/",[],"pipeline GitLab"," et des ",[57,271,274],{"href":272,"rel":273},"https://docs.gitlab.com/ci/quick_start/tutorial/",[],"pipelines plus complexes"," qui créent, testent et déploient un site statique.",[19,277,278,279,69],{},"Passez en revue la ",[57,280,283],{"href":281,"rel":282},"https://docs.gitlab.com/ci/yaml/",[],"liste des mots-clés de configuration .gitlab-ci.yml",[19,285,286],{},"Configurez GitLab.",[19,288,289],{},"Testez votre instance GitLab.",[12,291,292,293,298],{},"Une fois que vous avez compris le fonctionnement de GitLab et qu'une instance a été configurée, vous pouvez suivre votre plan de migration et commencer à déplacer des projets de Jenkins vers GitLab. Vérifiez que votre instance GitLab a été correctement configurée à l'aide des bonnes pratiques et des ",[57,294,297],{"href":295,"rel":296},"https://docs.gitlab.com/administration/reference_architectures/",[],"architectures de référence"," de GitLab.",[110,300,302],{"id":301},"migrez-vos-dépôts-vers-gitlab","Migrez vos dépôts vers GitLab",[12,304,305],{},"L'un des principaux inconvénients de Jenkins est qu'il ne fournit pas de solution SCM. Si vous utilisez Jenkins, votre code doit être stocké dans une solution SCM distincte à laquelle Jenkins doit avoir accès. Comme GitLab dispose d'un SCM intégré, la migration depuis Jenkins vous permet également de migrer depuis la solution SCM que vous utilisiez, ce qui entraîne une réduction supplémentaire des coûts.",[12,307,308],{},"GitLab fournit des outils pour vous permettre de déplacer facilement votre dépôt et ses métadonnées dans GitLab. Les outils d'importation suivants sont inclus et vous aideront à migrer vos projets vers GitLab :",[16,310,311,318,325,332,339,346,353,360,367],{},[19,312,313],{},[57,314,317],{"href":315,"rel":316},"https://docs.gitlab.com/user/project/import/github/",[],"GitHub",[19,319,320],{},[57,321,324],{"href":322,"rel":323},"https://docs.gitlab.com/user/project/settings/import_export/",[],"Autre instance GitLab",[19,326,327],{},[57,328,331],{"href":329,"rel":330},"https://docs.gitlab.com/user/import/bitbucket_cloud/",[],"Bitbucket Cloud",[19,333,334],{},[57,335,338],{"href":336,"rel":337},"https://docs.gitlab.com/user/import/bitbucket_server/",[],"Bitbucket Server",[19,340,341],{},[57,342,345],{"href":343,"rel":344},"https://docs.gitlab.com/user/project/import/fogbugz/",[],"FogBugz",[19,347,348],{},[57,349,352],{"href":350,"rel":351},"https://docs.gitlab.com/user/import/gitea/",[],"Gitea",[19,354,355],{},[57,356,359],{"href":357,"rel":358},"https://docs.gitlab.com/user/project/import/jira/",[],"Jira (Tickets uniquement)",[19,361,362],{},[57,363,366],{"href":364,"rel":365},"https://docs.gitlab.com/user/project/import/manifest/",[],"Dépôt par fichier manifeste",[19,368,369],{},[57,370,373],{"href":371,"rel":372},"https://docs.gitlab.com/user/project/import/repo_by_url/",[],"Dépôt par URL",[38,375,376],{},[41,377,43,378,43,382],{},[45,379],{"src":380,"alt":381},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176002/Blog/ie2xrexhbcoq6m8rnhit.png","GitHub to GitLab Repo Exporter",[50,383,384],{},"Outil d'exportation de dépôt de GitHub vers GitLab",[12,386,387,388,393,394,399],{},"Chaque outil d'importation importe différentes données d'un projet. Lisez notre ",[57,389,392],{"href":390,"rel":391},"https://docs.gitlab.com/user/import/",[],"documentation sur l'importation et la migration de projets"," pour en savoir plus sur les outils d'importation fournis et comprendre quelles données sont migrées vers GitLab. De plus, vous pouvez ",[57,395,398],{"href":396,"rel":397},"https://docs.gitlab.com/user/import/#automate-group-and-project-import",[],"automatiser l'importation de groupes et de projets"," et créer une solution personnalisée pour mieux répondre aux besoins de votre entreprise :",[16,401,402,409,416],{},[19,403,404],{},[57,405,408],{"href":406,"rel":407},"https://about.gitlab.com/services/",[],"Services professionnels",[19,410,411],{},[57,412,415],{"href":413,"rel":414},"https://gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate/-/blob/master/docs/using-congregate.md#quick-start",[],"Services de migration",[19,417,418],{},[57,419,422],{"href":420,"rel":421},"https://gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate/-/blob/master/customer/famq.md",[],"Foire aux questions sur la migration",[424,425,427],"h4",{"id":426},"comment-migrer-un-dépôt","Comment migrer un dépôt ?",[12,429,430,431,436],{},"La migration d'un dépôt vers GitLab est facile grâce à nos outils d'importation intégrés. Dans cet exemple, nous allons vous expliquer comment copier un dépôt de GitHub vers GitLab ainsi que ",[57,432,435],{"href":433,"rel":434},"https://docs.gitlab.com/user/project/import/github/#imported-data",[],"ses ressources"," (tickets, pull requests, jalons et plus encore).\nAfin de migrer un dépôt depuis GitHub vers GitLab, vous pouvez suivre les étapes ci-dessous :",[438,439,440,446,452],"ol",{},[19,441,442,443,69],{},"Dans la barre latérale de gauche, en haut, sélectionnez ",[122,444,445],{},"Créer un nouveau (+)",[19,447,448,449,69],{},"Sélectionnez ",[122,450,451],{},"Nouveau projet/dépôt",[19,453,448,454,69],{},[122,455,456],{},"Importer un projet",[38,458,459],{},[41,460,43,461],{},[45,462],{"src":463,"alt":48},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176017/Blog/boowmmaqhbredxa3g92s.png",[438,465,467,486,537,542,545,548],{"start":466},4,[19,468,469,470,472,473],{},"Cliquez sur le bouton ",[122,471,317],{},".\n",[16,474,475,483],{},[19,476,477,478,69],{},"Si vous utilisez GitLab Self-Managed, vous devez ",[57,479,482],{"href":480,"rel":481},"https://docs.gitlab.com/administration/settings/import_and_export_settings/#configure-allowed-import-sources",[],"activer l'outil d'importation GitHub",[19,484,485],{},"Notez que d'autres outils d'importation peuvent être lancés de la même manière.",[19,487,488,489],{},"Vous pouvez ensuite utiliser l'une des deux options ci-dessous :\n",[16,490,491,497],{},[19,492,493,494,69],{},"Autoriser OAuth de GitHub en sélectionnant ",[122,495,496],{},"Autoriser avec GitHub",[19,498,499,500],{},"Utiliser un jeton d'accès personnel GitHub :\n",[16,501,502,509,516,519,525,530],{},[19,503,504,505,69],{},"Accédez à la page ",[57,506,507],{"href":507,"rel":508},"https://github.com/settings/tokens/new",[],[19,510,511,512,515],{},"Dans le champ ",[122,513,514],{},"Note",", saisissez une description du token.",[19,517,518],{},"Sélectionnez la portée du dépôt.",[19,520,521,522,69],{},"En option, pour importer des collaborateurs, sélectionnez la portée ",[122,523,524],{},"read:org",[19,526,469,527,69],{},[122,528,529],{},"Générer un token",[19,531,532,533,536],{},"Sur la page d'importation de GitLab, dans le champ ",[122,534,535],{},"Jeton d'accès personnel",", collez le jeton d'accès personnel GitHub.",[19,538,469,539,69],{},[122,540,541],{},"Authentification",[19,543,544],{},"Sélectionnez les éléments que vous souhaitez migrer.",[19,546,547],{},"Sélectionnez les projets que vous souhaitez migrer et leur destination.",[19,549,469,550,69],{},[122,551,552],{},"Importer",[12,554,555],{},"Le projet importé devrait maintenant être disponible dans votre espace de travail. Pour en savoir plus sur la migration de GitHub vers GitLab, regardez cette vidéo :",[41,557,560,561],{"className":558},[559],"video_container","\n  ",[562,563,567],"iframe",{"src":564,"frameBorder":565,"allowFullScreen":566},"https://www.youtube.com/embed/0Id5oMl1Kqs?si=TQ5HI9aMwtzJMiMi","0","true"," ",[12,569,570],{},"Une fois que vous avez terminé la migration de votre dépôt, vous pouvez configurer votre pipeline Jenkins pour exploiter le fichier Jenkinsfile dans GitLab. Pour ce faire, définissez l'URL du dépôt sur le projet que vous venez tout juste d'importer via le menu de configuration du pipeline Jenkins :",[38,572,573],{},[41,574,43,575],{},[45,576],{"src":577,"alt":578},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176020/Blog/mu475liw66abcxbu2g6g.png","Jenkins Pipeline SCM settings",[12,580,581],{},"Cette opération est utile pendant la phase de migration initiale du dépôt et vous permet d'utiliser Jenkins et GitLab en parallèle. Vous évitez ainsi toute interruption de service pendant que vous travaillez sur votre migration.",[12,583,584,585,590],{},"De plus, vous pouvez utiliser le ",[57,586,589],{"href":587,"rel":588},"https://plugins.jenkins.io/gitlab-plugin/",[],"plug-in Jenkins GitLab"," pour faciliter la migration. Ce plug-in permet à GitLab de déclencher et d'obtenir le statut des compilations Jenkins.",[110,592,594],{"id":593},"migrez-vos-pipelines-cicd","Migrez vos pipelines CI/CD",[12,596,597],{},"Une fois que vous avez migré vos dépôts vers GitLab, vous pouvez procéder à la migration de vos pipelines Jenkins. Bien qu'assez simple, ce processus nécessite une bonne compréhension des concepts et de la syntaxe Jenkins et GitLab.",[12,599,600],{},"Jenkins fournit deux types de syntaxe pour la définition des pipelines : une syntaxe déclarative et une syntaxe scriptée. Dans ce guide, nous décrirons la migration à partir des pipelines déclaratifs, car ils sont les plus couramment utilisés.",[424,602,604],{"id":603},"migrez-votre-pipeline-étape-par-étape","Migrez votre pipeline étape par étape",[12,606,607],{},"Dans ce tutoriel, nous analyserons un fichier Jenkinsfile (Groovy) ainsi qu'un fichier de configuration GitLab CI/CD (YAML) qui compile, teste et déploie un microservice écrit en Golang. Nous activerons ensuite le pipeline dans GitLab et observerons le résultat.\nLe pipeline :",[16,609,610,616,624,627],{},[19,611,612,613],{},"Utilisera l'image de conteneur Golang avec le tag ",[122,614,615],{},"alpine",[19,617,618,619],{},"Exécutera un job pour compiler le code Golang en un fichier binaire exécutable\n",[16,620,621],{},[19,622,623],{},"Stockera le fichier exécutable compilé en tant qu'artefact",[19,625,626],{},"Exécutera un job pour lancer les tests unitaires",[19,628,629,630],{},"Exécutera un job pour effectuer le déploiement sur l'environnement de préproduction\n",[16,631,632,638,644],{},[19,633,634,635],{},"Ne s'exécutera que si la validation cible la branche de ",[122,636,637],{},"préproduction",[19,639,640,641],{},"S'exécutera uniquement après la réussite de l'étape de ",[122,642,643],{},"test",[19,645,646],{},"Utilisera l'artefact exécutable compilé du job précédent",[12,648,649,650,69],{},"Vous trouverez ci-dessous les définitions de pipeline Jenkins et GitLab accompagnées de commentaires descriptifs. Vous pouvez observer le pipeline en action dans le ",[57,651,654],{"href":652,"rel":653},"https://gitlab.com/gitlab-da/projects/blogs/meow-migration",[],"projet de migration Meow",[12,656,657],{},"Voici un fichier Jenkinsfile écrit en Groovy :",[659,660,666],"pre",{"className":661,"code":663,"language":664,"meta":665},[662],"language-text","// The top-level of the declarative\n// pipeline.\npipeline {\n\n  // Defines the default agent to use\n  // when it is not explicitly defined\n  // in a job.\n    agent any\n\n  // Defines the stages that will run\n  // in numerical order. Each stage\n  // only runs one job.\n    stages {\n\n    // Defines the name of the stage\n        stage('build') {\n      // Defines the container image to\n      // use for this job, overwriting\n      // the default 'agent any'.\n      // The Jenkins Docker plugin\n      // must be configured for this\n      // to run.\n            agent { docker 'golang:alpine' }\n\n      // Defines the sequence of steps\n      // to execute when the stage is\n      // run.\n            steps {\n                sh 'go build -o bin/meow-micro'\n                sh 'chmod +x bin/meow-micro'\n            }\n\n      // The steps to run after the\n      // stage completes.\n            post {\n              always {\n\n        // Stores the stage artifacts\n        // generated for use in another\n        // job.\n                archiveArtifacts artifacts: 'bin/meow-micro'\n                onlyIfSuccessful: true\n              }\n            }\n        }\n\n    stage('test') {\n            agent { docker 'golang:alpine' }\n            steps {\n                sh 'go test .'\n            }\n        }\n\n        stage('deploy') {\n      // Defines conditions which must\n      // be met in order for the job to\n      // execute. In this case the\n      // deploy job will only run on the       // staging branch.\n            when {\n              branch 'staging'\n            }\n            steps {\n                echo 'Deploying meow-micro to staging'\n        // Uses the artifact stored in\n        // the build stage.\n                sh './bin/meow-micro'\n            }\n        }\n    }\n}\n","text","",[667,668,663],"code",{"__ignoreMap":665},[12,670,671],{},"Voyons maintenant comment créer la même fonctionnalité dans GitLab :",[659,673,676],{"className":674,"code":675,"language":664,"meta":665},[662],"# Defines the default image to use\n# when it is not explicitly defined in\n# a job.\ndefault:\n  image: alpine:latest\n\n# Defines the order to run the stages.\n# Each stage can have multiple jobs.\nstages:\n  - build\n  - test\n  - deploy\n\n# Defines the name of the job\ncreate-binary:\n # Defines the stage the job will run in\n  stage: build\n # Defines the container image to use\n # for this job, overwriting default.\n  image: golang:alpine\n # Defines the sequence of steps to\n # execute when the job is run.\n  script:\n    - go build -o bin/meow-micro\n    - chmod +x bin/meow-micro\n # Stores the job artifacts generated\n # for use in another job.\n  artifacts:\n    paths:\n      - bin/meow-micro\n    expire_in: 1 week\n\nunit-tests:\n  stage: test\n  image: golang:alpine\n  script:\n    - go test .\n # Defines commands to run after the\n # job.\n after_script:\n  - echo \"Tests Complete\"\n\nstaging-deploy:\n  stage: deploy\n # Defines commands to run before the\n # actual job.\n  before_script:\n    - apk update\n  script:\n    - echo \"Deploying meow-micro to staging environment\"\n    - ./bin/meow-micro\n # Defines conditions which must be met\n # in order for this job to execute. In\n # this case the staging-deploy job will  # only run on the staging branch.\n  rules:\n    - if: $CI_COMMIT_BRANCH == 'staging'\n # Allows the artifact stored in the\n # build job to be used in this job.\n  artifacts:\n    paths:\n      - bin/meow-micro\n",[667,677,675],{"__ignoreMap":665},[12,679,680,681,686],{},"Comme vous l'avez peut-être remarqué, il existe de nombreuses similitudes entre Jenkins et GitLab en termes de syntaxe, ce qui simplifie la migration du pipeline. Bien que l'exemple ci-dessus fournisse une vue d'ensemble basique, assurez-vous de consulter la liste complète des ",[57,682,685],{"href":683,"rel":684},"https://docs.gitlab.com/ci/migration/jenkins/#comparison-of-features-and-concepts",[],"comparaisons de fonctionnalités et de concepts"," entre les deux outils.",[12,688,689,690,696],{},"Maintenant que nous comprenons comment transposer Jenkins à GitLab, nous pouvons commencer à créer un pipeline avec les mêmes fonctionnalités dans GitLab. Pour effectuer la migration de votre ",[57,691,695],{"href":692,"rel":693,"title":694},"https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/",[],"Qu'est-ce qu'un pipeline CI/CD ?","pipeline CI/CD",", suivez les étapes suivantes :",[698,699,701],"h5",{"id":700},"_1-ouvrez-le-dépôt-que-vous-avez-migré-vers-gitlab-dans-la-section-ci-dessus","1. Ouvrez le dépôt que vous avez migré vers GitLab dans la section ci-dessus.",[16,703,704,709],{},[19,705,442,706],{},[122,707,708],{},"Rechercher ou accéder à...",[19,710,711],{},"Localisez votre projet.",[698,713,715,716,69],{"id":714},"_2-ouvrez-léditeur-de-pipeline","2. Ouvrez l'",[57,717,720],{"href":718,"rel":719},"https://docs.gitlab.com/ci/pipeline_editor/",[],"éditeur de pipeline",[16,722,723],{},[19,724,725,726,69],{},"Dans la barre latérale de gauche, sélectionnez ",[122,727,728],{},"Compilation > Éditeur de pipeline",[38,730,731],{},[41,732,43,733],{},[45,734],{"src":735,"alt":736},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176026/Blog/ecp4jh7epho2oxuegaor.png","Pipeline editor menu",[16,738,739],{},[19,740,469,741,69],{},[122,742,743],{},"Configurer le pipeline",[38,745,746],{},[41,747,43,748],{},[45,749],{"src":750,"alt":751},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176029/Blog/nypfh01zhwgvzqc0xz3v.png","Configure pipeline selection",[698,753,755,756,69],{"id":754},"_3-complétez-le-fichier-gitlab-ciyml","3. Complétez le fichier ",[57,757,759],{"href":281,"rel":758},[],".gitlab-ci.yml",[16,761,762],{},[19,763,764,765],{},"Ajoutez le code du pipeline GitLab CI. ",[38,766],{},[41,768,43,769],{},[45,770],{"src":771,"alt":772},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176031/Blog/nxi6uxxispyyoiiyvxyg.png","Pipeline editor input",[16,774,775],{},[19,776,777],{},"Vérifiez que la syntaxe est correcte.",[38,779,780],{},[41,781,43,782],{},[45,783],{"src":784,"alt":785},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176037/Blog/x3d4utfsnymye0lvphtf.png","Pipeline syntax validation",[16,787,788],{},[19,789,790],{},"Visualisez le pipeline.",[38,792,793],{},[41,794,43,795],{},[45,796],{"src":797,"alt":798},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176043/Blog/hipzofpyywjxf62edzfv.png","Pipeline visualization",[698,800,802],{"id":801},"_4-validez-le-fichier-dans-la-branche-principale","4. Validez le fichier dans la branche principale.",[16,804,805,808,811],{},[19,806,807],{},"Ajoutez un message de validation.",[19,809,810],{},"Assurez-vous que la branche est définie sur la branche principale.",[19,812,469,813,69],{},[122,814,815],{},"Valider les modifications",[38,817,818],{},[41,819,43,820],{},[45,821],{"src":822,"alt":823},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176048/Blog/nn8bl7rdysabccoycfrk.png","Commit changes dialog",[12,825,826,827,832,833,836,837,840,841,844,845,848,849,852],{},"Une fois le fichier fusionné, le pipeline défini s'exécute. Vous pouvez revenir à votre projet et ",[57,828,831],{"href":829,"rel":830},"https://docs.gitlab.com/ci/pipelines/#view-pipelines",[],"observer le pipeline"," en action en le sélectionnant sur la page ",[122,834,835],{},"Compilation > Pipelines"," de votre projet. Comme il a été exécuté sur la branche ",[122,838,839],{},"principale",", vous ne verrez que les jobs ",[122,842,843],{},"create-binary"," et ",[122,846,847],{},"unit-tests",". Le job ",[122,850,851],{},"staging-deploy"," s'exécute uniquement sur la branche de préproduction.",[38,854,855],{},[41,856,43,857],{},[45,858],{"src":859,"alt":860},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176051/Blog/wfb4k8nkzpg28kpf2pzz.png","Pipeline running on main branch",[12,862,863],{},"Si nous créons une branche de préproduction, le pipeline suivant s'exécute.",[38,865,866],{},[41,867,43,868],{},[45,869],{"src":870,"alt":871},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176053/Blog/e2jxedpolaniotgixpby.png","Pipeline running on staging branch",[12,873,874],{},"En cliquant sur un job, nous pouvons voir la sortie associée :",[38,876,877],{},[41,878,43,879,43,883],{},[45,880],{"src":881,"alt":882},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176056/Blog/fywzwbzkwcvc9zzakilh.png","create-binary job output",[50,884,885],{},"Sortie du job create-binary",[38,887,888],{},[41,889,43,890,43,894],{},[45,891],{"src":892,"alt":893},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176061/Blog/ekmpd8ecanwwiena9xi9.png","unit-tests job output input",[50,895,896],{},"Entrée/sortie du job unit-tests",[38,898,899],{},[41,900,43,901,43,905],{},[45,902],{"src":903,"alt":904},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1752176065/Blog/h7nqxszy50xdmnvhalfq.png","staging-deploy job output",[50,906,907],{},"Sortie du job staging-deploy",[12,909,910,911,913,914,916],{},"L'artefact est stocké dans le job ",[122,912,843],{}," et utilisé dans le job ",[122,915,851],{},". Et voilà, la migration d'un pipeline de Jenkins vers GitLab est aussi simple que cela !",[110,918,920],{"id":919},"autres-conseils-à-suivre-lors-de-la-migration","Autres conseils à suivre lors de la migration",[12,922,923],{},"Voici quelques conseils pratiques pour simplifier le processus de déploiement :",[16,925,926,929,936,945,948,951,954],{},[19,927,928],{},"N'essayez pas de répliquer les tâches dans des jobs GitLab une à une. Prenez le temps de comprendre le fonctionnement du pipeline actuel et quel problème il résout.",[19,930,931,932,935],{},"Certains jobs Jenkins peuvent être trop complexes pour être migrés immédiatement vers GitLab. Il peut donc s'avérer pratique d'utiliser le ",[57,933,589],{"href":587,"rel":934},[]," pour lancer les pipelines Jenkins et afficher leurs résultats directement depuis GitLab. Cela vous permet de migrer lentement certaines actions vers GitLab jusqu'à ce que l'ensemble du pipeline puisse être déplacé.",[19,937,938,939,944],{},"Mettez en œuvre des ",[57,940,943],{"href":941,"rel":942},"https://docs.gitlab.com/user/application_security/",[],"scanners de sécurité et une vérification de la qualité du code"," à l'aide de templates intégrés fournis par GitLab. Cela vous permettra d'intégrer la sécurité en amont et ainsi de réduire le risque potentiel de failles. Simplifiez votre configuration CI/CD et essayez d'utiliser les avantages de chaque fonctionnalité sans tarder. Modularisez le code et implémentez-le en petites itérations.",[19,946,947],{},"Mettez en place le suivi et la gouvernance dès le départ.",[19,949,950],{},"Sachez que GitLab Runner (Go) peut se comporter différemment de l'agent Jenkins (Java). L'utilisation du processeur et la consommation de mémoire peuvent différer. Pensez à effectuer des comparaisons au fil du temps.",[19,952,953],{},"Envisagez d'investir dans des mécanismes de mise à l'échelle automatique et arrêtez les ressources inutiles le week-end ou en dehors des heures de travail.",[19,955,956],{},"Modernisez le développement d'applications en conteneurisant vos jobs. Les jobs Jenkins ne sont pas actuellement exécutés sur un conteneur, mais sur un agent Jenkins s'exécutant en tant que machine virtuelle.",[12,958,959,960,965],{},"Bien que cette liste ne soit pas exhaustive, elle constitue un bon point de départ. Si vous avez besoin d'une aide supplémentaire, GitLab fournit des ",[57,961,964],{"href":962,"rel":963},"https://about.gitlab.com/fr-fr/get-help/",[],"services professionnels"," pour vous aider dans votre parcours de migration.",[110,967,969],{"id":968},"conclusion","Conclusion",[12,971,972,973,978],{},"Merci de votre intérêt pour cet article ! Nous espérons que ce guide vous a aidé à comprendre les avantages d'une migration de Jenkins vers GitLab, et comment procéder.\nVous hésitez encore ? ",[57,974,977],{"href":975,"rel":976},"https://about.gitlab.com/fr-fr/free-trial/",[],"Essayez GitLab gratuitement"," et découvrez les avantages de notre plateforme DevSecOps.",[12,980,981],{},"Ressources complémentaires :",[16,983,984,991,998,1004,1011,1018],{},[19,985,986],{},[57,987,990],{"href":988,"rel":989},"https://docs.gitlab.com/ci/migration/jenkins/",[],"Migration depuis Jenkins",[19,992,993],{},[57,994,997],{"href":995,"rel":996},"https://docs.gitlab.com/ci/migration/plan_a_migration/",[],"Planification d'une migration",[19,999,1000],{},[57,1001,1003],{"href":390,"rel":1002},[],"Outils d'importation de projets GitLab",[19,1005,1006],{},[57,1007,1010],{"href":1008,"rel":1009},"https://about.gitlab.com/fr-fr/blog/migration-guide-github-advanced-security-to-gitlab-ultimate/",[],"Migrer de GitHub Advanced Security vers GitLab Ultimate : notre guide complet",[19,1012,1013],{},[57,1014,1017],{"href":1015,"rel":1016},"https://youtu.be/0Id5oMl1Kqs?feature=shared",[],"Vidéo : Migration facile de GitHub vers GitLab",[19,1019,1020],{},[57,1021,1024],{"href":1022,"rel":1023},"https://about.gitlab.com/blog/jenkins-gitlab-ultimate-guide-to-modernizing-cicd-environment/",[],"De Jenkins vers GitLab : le guide ultime pour moderniser votre environnement CI/CD",{"title":665,"searchDepth":1026,"depth":1026,"links":1027},2,[1028,1033],{"id":87,"depth":1026,"text":88,"children":1029},[1030,1032],{"id":112,"depth":1031,"text":113},3,{"id":186,"depth":1031,"text":187},{"id":246,"depth":1026,"text":247,"children":1034},[1035,1036,1037,1038],{"id":301,"depth":1031,"text":302},{"id":593,"depth":1031,"text":594},{"id":919,"depth":1031,"text":920},{"id":968,"depth":1031,"text":969},"devsecops","2024-02-01","Découvrez pourquoi et comment migrer facilement de Jenkins vers GitLab en suivant ce guide étape par étape.","md",null,true,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749663019/Blog/Hero%20Images/AdobeStock_519147119.jpg",{},"/fr-fr/blog/jenkins-to-gitlab-migration-made-easy",{"title":5,"description":1041,"ogTitle":5,"ogDescription":1041,"noIndex":1049,"ogImage":1045,"ogUrl":1050,"ogSiteName":1051,"ogType":1052,"canonicalUrls":1050},false,"https://about.gitlab.com/blog/jenkins-to-gitlab-migration-made-easy","https://about.gitlab.com","article","jenkins-to-gitlab-migration-made-easy","fr-fr/blog/jenkins-to-gitlab-migration-made-easy",[1056,62],"CI/CD","BlogPost","2025-03-18","3EFEiGg5pd-z23kITX4SLVPsEcljIQylOquhi-yMoUY",{"logo":1061,"freeTrial":1066,"sales":1071,"login":1076,"items":1081,"search":1409,"minimal":1445,"duo":1464,"switchNav":1473,"pricingDeployment":1484},{"config":1062},{"href":1063,"dataGaName":1064,"dataGaLocation":1065},"/fr-fr/","gitlab logo","header",{"text":1067,"config":1068},"Commencer un essai gratuit",{"href":1069,"dataGaName":1070,"dataGaLocation":1065},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":1072,"config":1073},"Demander une démo",{"href":1074,"dataGaName":1075,"dataGaLocation":1065},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":1077,"config":1078},"Connexion",{"href":1079,"dataGaName":1080,"dataGaLocation":1065},"https://gitlab.com/users/sign_in/","sign in",[1082,1111,1212,1217,1331,1387],{"text":1083,"config":1084,"menu":1086},"Plateforme",{"dataNavLevelOne":1085},"platform",{"type":1087,"columns":1088},"cards",[1089,1095,1103],{"title":1083,"description":1090,"link":1091},"La plateforme d'orchestration intelligente pour le DevSecOps",{"text":1092,"config":1093},"Explorer notre plateforme",{"href":1094,"dataGaName":1085,"dataGaLocation":1065},"/fr-fr/platform/",{"title":1096,"description":1097,"link":1098},"GitLab Duo Agent Platform","L'IA agentique pour l'ensemble du cycle de développement logiciel",{"text":1099,"config":1100},"Découvrir GitLab Duo",{"href":1101,"dataGaName":1102,"dataGaLocation":1065},"/fr-fr/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":1104,"description":1105,"link":1106},"Pourquoi GitLab ?","Découvrez les principales raisons pour lesquelles les entreprises choisissent GitLab",{"text":1107,"config":1108},"En savoir plus",{"href":1109,"dataGaName":1110,"dataGaLocation":1065},"/fr-fr/why-gitlab/","why gitlab",{"text":1112,"left":1044,"config":1113,"menu":1115},"Produit",{"dataNavLevelOne":1114},"solutions",{"type":1116,"link":1117,"columns":1121,"feature":1191},"lists",{"text":1118,"config":1119},"Voir toutes les solutions",{"href":1120,"dataGaName":1114,"dataGaLocation":1065},"/fr-fr/solutions/",[1122,1146,1169],{"title":1123,"description":1124,"link":1125,"items":1130},"Automatisation","CI/CD et automatisation pour accélérer le déploiement",{"config":1126},{"icon":1127,"href":1128,"dataGaName":1129,"dataGaLocation":1065},"AutomatedCodeAlt","/fr-fr/solutions/delivery-automation/","automated software delivery",[1131,1134,1137,1142],{"text":1056,"config":1132},{"href":1133,"dataGaLocation":1065,"dataGaName":1056},"/fr-fr/solutions/continuous-integration/",{"text":1096,"config":1135},{"href":1101,"dataGaLocation":1065,"dataGaName":1136},"gitlab duo agent platform - product menu",{"text":1138,"config":1139},"Gestion du code source",{"href":1140,"dataGaLocation":1065,"dataGaName":1141},"/fr-fr/solutions/source-code-management/","Source Code Management",{"text":1143,"config":1144},"Livraison de logiciels automatisée",{"href":1128,"dataGaLocation":1065,"dataGaName":1145},"Automated software delivery",{"title":1147,"description":1148,"link":1149,"items":1154},"Sécurité","Livrez du code plus rapidement sans compromettre la sécurité",{"config":1150},{"href":1151,"dataGaName":1152,"dataGaLocation":1065,"icon":1153},"/fr-fr/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[1155,1159,1164],{"text":1156,"config":1157},"Tests de sécurité des applications",{"href":1151,"dataGaName":1158,"dataGaLocation":1065},"Application security testing",{"text":1160,"config":1161},"Sécurité de la chaîne d'approvisionnement logicielle",{"href":1162,"dataGaLocation":1065,"dataGaName":1163},"/fr-fr/solutions/supply-chain/","Software supply chain security",{"text":1165,"config":1166},"Conformité logicielle",{"href":1167,"dataGaName":1168,"dataGaLocation":1065},"/fr-fr/solutions/software-compliance/","software compliance",{"title":1170,"link":1171,"items":1176},"Mesures",{"config":1172},{"icon":1173,"href":1174,"dataGaName":1175,"dataGaLocation":1065},"DigitalTransformation","/fr-fr/solutions/visibility-measurement/","visibility and measurement",[1177,1181,1186],{"text":1178,"config":1179},"Visibilité et mesures",{"href":1174,"dataGaLocation":1065,"dataGaName":1180},"Visibility and Measurement",{"text":1182,"config":1183},"Gestion de la chaîne de valeur",{"href":1184,"dataGaLocation":1065,"dataGaName":1185},"/fr-fr/solutions/value-stream-management/","Value Stream Management",{"text":1187,"config":1188},"Analyses et informations",{"href":1189,"dataGaLocation":1065,"dataGaName":1190},"/fr-fr/solutions/analytics-and-insights/","Analytics and insights",{"title":1192,"type":1116,"items":1193},"GitLab",[1194,1200,1206],{"text":1195,"config":1196},"Entreprises",{"icon":1197,"href":1198,"dataGaLocation":1065,"dataGaName":1199},"Building","/fr-fr/enterprise/","enterprise",{"text":1201,"config":1202},"Pour les PME",{"icon":1203,"href":1204,"dataGaLocation":1065,"dataGaName":1205},"Work","/fr-fr/small-business/","small business",{"text":1207,"config":1208},"Pour le secteur public",{"icon":1209,"href":1210,"dataGaLocation":1065,"dataGaName":1211},"Organization","/fr-fr/solutions/public-sector/","public sector",{"text":1213,"config":1214},"Tarifs",{"href":1215,"dataGaName":1216,"dataGaLocation":1065,"dataNavLevelOne":1216},"/fr-fr/pricing/","pricing",{"text":1218,"config":1219,"menu":1221},"Ressources",{"dataNavLevelOne":1220},"resources",{"type":1116,"link":1222,"columns":1226,"feature":1320},{"text":1223,"config":1224},"Afficher toutes les ressources",{"href":1225,"dataGaName":1220,"dataGaLocation":1065},"/fr-fr/resources/",[1227,1260,1287],{"title":1228,"items":1229},"Premiers pas",[1230,1235,1240,1245,1250,1255],{"text":1231,"config":1232},"Installation",{"href":1233,"dataGaName":1234,"dataGaLocation":1065},"/fr-fr/install/","install",{"text":1236,"config":1237},"Guides de démarrage",{"href":1238,"dataGaName":1239,"dataGaLocation":1065},"/fr-fr/get-started/","quick setup checklists",{"text":1241,"config":1242},"Apprentissage",{"href":1243,"dataGaLocation":1065,"dataGaName":1244},"https://university.gitlab.com/","learn",{"text":1246,"config":1247},"Documentation",{"href":1248,"dataGaName":1249,"dataGaLocation":1065},"https://docs.gitlab.com/","product documentation",{"text":1251,"config":1252},"Vidéos sur les bonnes pratiques",{"href":1253,"dataGaName":1254,"dataGaLocation":1065},"/fr-fr/getting-started-videos/","best practice videos",{"text":1256,"config":1257},"Intégrations",{"href":1258,"dataGaName":1259,"dataGaLocation":1065},"/fr-fr/integrations/","integrations",{"title":1261,"items":1262},"Découvrir",[1263,1268,1273,1278,1282],{"text":1264,"config":1265},"Témoignages clients",{"href":1266,"dataGaName":1267,"dataGaLocation":1065},"/fr-fr/customers/","customer success stories",{"text":1269,"config":1270},"Blog",{"href":1271,"dataGaName":1272,"dataGaLocation":1065},"/fr-fr/blog/","blog",{"text":1274,"config":1275},"Demo Hub",{"href":1276,"dataGaName":1277,"dataGaLocation":1065},"/fr-fr/demo-hub/","demo hub",{"text":1279,"config":1280},"The Source",{"href":1281,"dataGaName":1272,"dataGaLocation":1065},"/fr-fr/the-source/",{"text":1283,"config":1284},"Travail à distance",{"href":1285,"dataGaName":1286,"dataGaLocation":1065},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":1288,"items":1289},"Connecter",[1290,1295,1300,1305,1310,1315],{"text":1291,"config":1292},"Services GitLab",{"href":1293,"dataGaName":1294,"dataGaLocation":1065},"/fr-fr/services/","services",{"text":1296,"config":1297},"Contribuer",{"href":1298,"dataGaName":1299,"dataGaLocation":1065},"https://contributors.gitlab.com","contribute",{"text":1301,"config":1302},"Communauté",{"href":1303,"dataGaName":1304,"dataGaLocation":1065},"/community/","community",{"text":1306,"config":1307},"Forum",{"href":1308,"dataGaName":1309,"dataGaLocation":1065},"https://forum.gitlab.com/","forum",{"text":1311,"config":1312},"Événements",{"href":1313,"dataGaName":1314,"dataGaLocation":1065},"/events/","events",{"text":1316,"config":1317},"Partenaires",{"href":1318,"dataGaName":1319,"dataGaLocation":1065},"/fr-fr/partners/","partners",{"config":1321,"title":1324,"text":1325,"link":1326},{"background":1322,"textColor":1323},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Nouveautés de GitLab","Découvrez les dernières fonctionnalités et améliorations.",{"text":1327,"config":1328},"Lire les articles les plus récents",{"href":1329,"dataGaName":1330,"dataGaLocation":1065},"/fr-fr/whats-new/","whats new",{"text":1332,"config":1333,"menu":1335},"Société",{"dataNavLevelOne":1334},"company",{"type":1116,"columns":1336},[1337],{"items":1338},[1339,1344,1350,1352,1357,1362,1367,1372,1377,1382],{"text":1340,"config":1341},"À propos",{"href":1342,"dataGaName":1343,"dataGaLocation":1065},"/fr-fr/company/","about",{"text":1345,"config":1346,"footerGa":1349},"Carrières",{"href":1347,"dataGaName":1348,"dataGaLocation":1065},"/jobs/","jobs",{"dataGaName":1348},{"text":1311,"config":1351},{"href":1313,"dataGaName":1314,"dataGaLocation":1065},{"text":1353,"config":1354},"Leadership",{"href":1355,"dataGaName":1356,"dataGaLocation":1065},"/company/team/e-group/","leadership",{"text":1358,"config":1359},"Manuel",{"href":1360,"dataGaName":1361,"dataGaLocation":1065},"https://handbook.gitlab.com/","handbook",{"text":1363,"config":1364},"Relations avec les investisseurs",{"href":1365,"dataGaName":1366,"dataGaLocation":1065},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1368,"config":1369},"Trust Center",{"href":1370,"dataGaName":1371,"dataGaLocation":1065},"/fr-fr/security/","trust center",{"text":1373,"config":1374},"Centre pour la transparence de l'IA",{"href":1375,"dataGaName":1376,"dataGaLocation":1065},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":1378,"config":1379},"Newsletter",{"href":1380,"dataGaName":1381,"dataGaLocation":1065},"/company/contact/#contact-forms","newsletter",{"text":1383,"config":1384},"Presse",{"href":1385,"dataGaName":1386,"dataGaLocation":1065},"/press/","press",{"text":1388,"config":1389,"menu":1390},"Nous contacter",{"dataNavLevelOne":1334},{"type":1116,"columns":1391},[1392],{"items":1393},[1394,1399,1404],{"text":1395,"config":1396},"Contacter l'équipe commerciale",{"href":1397,"dataGaName":1398,"dataGaLocation":1065},"/fr-fr/sales/","talk to sales",{"text":1400,"config":1401},"Assistance GitLab",{"href":1402,"dataGaName":1403,"dataGaLocation":1065},"https://support.gitlab.com/hc/en-us","support portal",{"text":1405,"config":1406},"Portail clients GitLab",{"href":1407,"dataGaName":1408,"dataGaLocation":1065},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1410,"login":1411,"suggestions":1418},"Fermer",{"text":1412,"link":1413},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":1414,"config":1415},"GitLab.com",{"href":1079,"dataGaName":1416,"dataGaLocation":1417},"search login","search",{"text":1419,"default":1420},"Suggestions",[1421,1424,1429,1431,1436,1441],{"text":1096,"config":1422},{"href":1101,"dataGaName":1423,"dataGaLocation":1417},"GitLab Duo Agent Platform",{"text":1425,"config":1426},"Suggestions de code (IA)",{"href":1427,"dataGaName":1428,"dataGaLocation":1417},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":1056,"config":1430},{"href":1133,"dataGaName":1056,"dataGaLocation":1417},{"text":1432,"config":1433},"GitLab sur AWS",{"href":1434,"dataGaName":1435,"dataGaLocation":1417},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":1437,"config":1438},"GitLab sur Google Cloud",{"href":1439,"dataGaName":1440,"dataGaLocation":1417},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1442,"config":1443},"Pourquoi utiliser GitLab ?",{"href":1109,"dataGaName":1444,"dataGaLocation":1417},"Why GitLab?",{"freeTrial":1446,"mobileIcon":1451,"desktopIcon":1456,"secondaryButton":1459},{"text":1447,"config":1448},"Commencer votre essai gratuit",{"href":1449,"dataGaName":1070,"dataGaLocation":1450},"https://gitlab.com/-/trials/new/","nav",{"altText":1452,"config":1453},"Icône GitLab",{"src":1454,"dataGaName":1455,"dataGaLocation":1450},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1452,"config":1457},{"src":1458,"dataGaName":1455,"dataGaLocation":1450},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1460,"config":1461},"Commencer",{"href":1462,"dataGaName":1463,"dataGaLocation":1450},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":1465,"mobileIcon":1469,"desktopIcon":1471},{"text":1466,"config":1467},"En savoir plus sur GitLab Duo",{"href":1101,"dataGaName":1468,"dataGaLocation":1450},"gitlab duo",{"altText":1452,"config":1470},{"src":1454,"dataGaName":1455,"dataGaLocation":1450},{"altText":1452,"config":1472},{"src":1458,"dataGaName":1455,"dataGaLocation":1450},{"button":1474,"mobileIcon":1479,"desktopIcon":1481},{"text":1475,"config":1476},"/switch",{"href":1477,"dataGaName":1478,"dataGaLocation":1450},"#contact","switch",{"altText":1452,"config":1480},{"src":1454,"dataGaName":1455,"dataGaLocation":1450},{"altText":1452,"config":1482},{"src":1483,"dataGaName":1455,"dataGaLocation":1450},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1485,"mobileIcon":1490,"desktopIcon":1492},{"text":1486,"config":1487},"Retour aux tarifs",{"href":1215,"dataGaName":1488,"dataGaLocation":1450,"icon":1489},"back to pricing","GoBack",{"altText":1452,"config":1491},{"src":1454,"dataGaName":1455,"dataGaLocation":1450},{"altText":1452,"config":1493},{"src":1458,"dataGaName":1455,"dataGaLocation":1450},{"title":1495,"button":1496,"config":1500},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":1107,"config":1497},{"href":1498,"dataGaName":1499,"dataGaLocation":1065},"/fr-fr/gitlab-orbit/","orbit",{"layout":1501,"disabled":1049},"release",{"data":1503},{"text":1504,"source":1505,"edit":1511,"contribute":1516,"config":1520,"items":1525,"minimal":1731},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":1506,"config":1507},"Afficher le code source de la page",{"href":1508,"dataGaName":1509,"dataGaLocation":1510},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1512,"config":1513},"Modifier cette page",{"href":1514,"dataGaName":1515,"dataGaLocation":1510},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1296,"config":1517},{"href":1518,"dataGaName":1519,"dataGaLocation":1510},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1521,"facebook":1522,"youtube":1523,"linkedin":1524},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1526,1572,1623,1666,1698],{"title":1213,"links":1527,"subMenu":1542},[1528,1532,1537],{"text":1529,"config":1530},"Voir les forfaits",{"href":1215,"dataGaName":1531,"dataGaLocation":1510},"view plans",{"text":1533,"config":1534},"GitLab Premium",{"href":1535,"dataGaName":1536,"dataGaLocation":1510},"/fr-fr/pricing/premium/","why premium",{"text":1538,"config":1539},"GitLab Ultimate",{"href":1540,"dataGaName":1541,"dataGaLocation":1510},"/fr-fr/pricing/ultimate/","why ultimate",[1543],{"title":1388,"links":1544},[1545,1547,1549,1552,1557,1562,1567],{"text":1395,"config":1546},{"href":1397,"dataGaName":1075,"dataGaLocation":1510},{"text":1400,"config":1548},{"href":1402,"dataGaName":1403,"dataGaLocation":1510},{"text":1550,"config":1551},"Portail clients",{"href":1407,"dataGaName":1408,"dataGaLocation":1510},{"text":1553,"config":1554},"Statut",{"href":1555,"dataGaName":1556,"dataGaLocation":1510},"https://status.gitlab.com/","status",{"text":1558,"config":1559},"Conditions d'utilisation",{"href":1560,"dataGaName":1561,"dataGaLocation":1510},"/terms/","terms of use",{"text":1563,"config":1564},"Politique de confidentialité",{"href":1565,"dataGaName":1566,"dataGaLocation":1510},"/fr-fr/privacy/","privacy statement",{"text":1568,"config":1569},"Gestion des cookies",{"dataGaName":1570,"dataGaLocation":1510,"id":1571,"isOneTrustButton":1044},"cookie preferences","ot-sdk-btn",{"title":1112,"links":1573,"subMenu":1582},[1574,1578],{"text":1575,"config":1576},"Plateforme DevSecOps",{"href":1094,"dataGaName":1577,"dataGaLocation":1510},"devsecops platform",{"text":1579,"config":1580},"Développement assisté par l'IA",{"href":1101,"dataGaName":1581,"dataGaLocation":1510},"ai-assisted development",[1583],{"title":1584,"links":1585},"Thèmes",[1586,1590,1595,1600,1605,1608,1613,1618],{"text":1056,"config":1587},{"href":1588,"dataGaName":1589,"dataGaLocation":1510},"/fr-fr/topics/ci-cd/","cicd",{"text":1591,"config":1592},"GitOps",{"href":1593,"dataGaName":1594,"dataGaLocation":1510},"/fr-fr/topics/gitops/","gitops",{"text":1596,"config":1597},"DevOps",{"href":1598,"dataGaName":1599,"dataGaLocation":1510},"/fr-fr/topics/devops/","devops",{"text":1601,"config":1602},"Contrôle de version",{"href":1603,"dataGaName":1604,"dataGaLocation":1510},"/fr-fr/topics/version-control/","version control",{"text":62,"config":1606},{"href":1607,"dataGaName":1039,"dataGaLocation":1510},"/fr-fr/topics/devsecops/",{"text":1609,"config":1610},"Cloud-native",{"href":1611,"dataGaName":1612,"dataGaLocation":1510},"/fr-fr/topics/cloud-native/","cloud native",{"text":1614,"config":1615},"IA pour la programmation",{"href":1616,"dataGaName":1617,"dataGaLocation":1510},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":1619,"config":1620},"IA agentique",{"href":1621,"dataGaName":1622,"dataGaLocation":1510},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1624,"links":1625},"Solutions",[1626,1629,1631,1636,1639,1642,1645,1648,1650,1653,1656,1661],{"text":1156,"config":1627},{"href":1151,"dataGaName":1628,"dataGaLocation":1510},"Application Security Testing",{"text":1143,"config":1630},{"href":1128,"dataGaName":1129,"dataGaLocation":1510},{"text":1632,"config":1633},"Développement Agile",{"href":1634,"dataGaName":1635,"dataGaLocation":1510},"/fr-fr/solutions/agile-delivery/","agile delivery",{"text":1138,"config":1637},{"href":1140,"dataGaName":1638,"dataGaLocation":1510},"source code management",{"text":1056,"config":1640},{"href":1133,"dataGaName":1641,"dataGaLocation":1510},"continuous integration & delivery",{"text":1182,"config":1643},{"href":1184,"dataGaName":1644,"dataGaLocation":1510},"value stream management",{"text":1591,"config":1646},{"href":1647,"dataGaName":1594,"dataGaLocation":1510},"/fr-fr/solutions/gitops/",{"text":1195,"config":1649},{"href":1198,"dataGaName":1199,"dataGaLocation":1510},{"text":1651,"config":1652},"PME",{"href":1204,"dataGaName":1205,"dataGaLocation":1510},{"text":1654,"config":1655},"Secteur public",{"href":1210,"dataGaName":1211,"dataGaLocation":1510},{"text":1657,"config":1658},"Éducation",{"href":1659,"dataGaName":1660,"dataGaLocation":1510},"/fr-fr/solutions/education/","education",{"text":1662,"config":1663},"Services financiers",{"href":1664,"dataGaName":1665,"dataGaLocation":1510},"/fr-fr/solutions/finance/","financial services",{"title":1218,"links":1667},[1668,1670,1672,1674,1677,1679,1682,1684,1686,1688,1690,1692,1694,1696],{"text":1231,"config":1669},{"href":1233,"dataGaName":1234,"dataGaLocation":1510},{"text":1236,"config":1671},{"href":1238,"dataGaName":1239,"dataGaLocation":1510},{"text":1241,"config":1673},{"href":1243,"dataGaName":1244,"dataGaLocation":1510},{"text":1246,"config":1675},{"href":1248,"dataGaName":1676,"dataGaLocation":1510},"docs",{"text":1269,"config":1678},{"href":1271,"dataGaName":1272,"dataGaLocation":1510},{"text":1680,"config":1681},"Nouveautés",{"href":1329,"dataGaName":1330,"dataGaLocation":1510},{"text":1264,"config":1683},{"href":1266,"dataGaName":1267,"dataGaLocation":1510},{"text":1283,"config":1685},{"href":1285,"dataGaName":1286,"dataGaLocation":1510},{"text":1291,"config":1687},{"href":1293,"dataGaName":1294,"dataGaLocation":1510},{"text":1296,"config":1689},{"href":1298,"dataGaName":1299,"dataGaLocation":1510},{"text":1301,"config":1691},{"href":1303,"dataGaName":1304,"dataGaLocation":1510},{"text":1306,"config":1693},{"href":1308,"dataGaName":1309,"dataGaLocation":1510},{"text":1311,"config":1695},{"href":1313,"dataGaName":1314,"dataGaLocation":1510},{"text":1316,"config":1697},{"href":1318,"dataGaName":1319,"dataGaLocation":1510},{"title":1332,"links":1699},[1700,1702,1704,1706,1708,1710,1715,1720,1722,1724,1726],{"text":1340,"config":1701},{"href":1342,"dataGaName":1334,"dataGaLocation":1510},{"text":1345,"config":1703},{"href":1347,"dataGaName":1348,"dataGaLocation":1510},{"text":1353,"config":1705},{"href":1355,"dataGaName":1356,"dataGaLocation":1510},{"text":1358,"config":1707},{"href":1360,"dataGaName":1361,"dataGaLocation":1510},{"text":1363,"config":1709},{"href":1365,"dataGaName":1366,"dataGaLocation":1510},{"text":1711,"config":1712},"Développement durable",{"href":1713,"dataGaName":1714,"dataGaLocation":1510},"/sustainability/","Sustainability",{"text":1716,"config":1717},"Diversité, inclusion et appartenance (DIB)",{"href":1718,"dataGaName":1719,"dataGaLocation":1510},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1368,"config":1721},{"href":1370,"dataGaName":1371,"dataGaLocation":1510},{"text":1378,"config":1723},{"href":1380,"dataGaName":1381,"dataGaLocation":1510},{"text":1383,"config":1725},{"href":1385,"dataGaName":1386,"dataGaLocation":1510},{"text":1727,"config":1728},"Déclaration de transparence sur l'esclavage moderne",{"href":1729,"dataGaName":1730,"dataGaLocation":1510},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1732},[1733,1735,1737],{"text":1558,"config":1734},{"href":1560,"dataGaName":1561,"dataGaLocation":1510},{"text":1568,"config":1736},{"dataGaName":1570,"dataGaLocation":1510,"id":1571,"isOneTrustButton":1044},{"text":1563,"config":1738},{"href":1565,"dataGaName":1566,"dataGaLocation":1510},[1740],{"id":1741,"title":7,"body":1043,"config":1742,"content":1744,"description":1043,"extension":1748,"meta":1749,"navigation":1044,"path":1750,"seo":1751,"stem":1752,"__hash__":1753},"blogAuthors/en-us/blog/authors/fernando-diaz.yml",{"template":1743},"BlogAuthor",{"name":7,"config":1745},{"headshot":1746,"ctfId":1747},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659556/Blog/Author%20Headshots/fern_diaz.png","fjdiaz","yml",{},"/en-us/blog/authors/fernando-diaz",{},"en-us/blog/authors/fernando-diaz","lxRJIOydP4_yzYZvsPcuQevP9AYAKREF7i8QmmdnOWc",[1755,1764,1772],{"title":1756,"description":1757,"heroImage":1758,"category":1039,"date":1759,"authors":1760,"slug":1763,"externalUrl":1043},"Cloud et DevOps : pourquoi cette alliance transforme le développement logiciel","Cloud et DevOps convergent pour accélérer la livraison logicielle. Découvrez comment cette alliance transforme vos cycles de développement logiciel et renforce votre compétitivité.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1774465167/n5hlvrsrheadeccyr1oz.png","2026-05-28",[1761,1762],"Salahddine Aberkan","Maud Leuenberger","cloud-and-devops",{"title":1765,"description":1766,"heroImage":1767,"category":1039,"date":1768,"authors":1769,"slug":1771,"externalUrl":1043},"Consolidez votre pile GitLab avec Gitaly sur Kubernetes","Découvrez comment installer Gitaly sur Kubernetes, désormais en disponibilité générale.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1756500636/wmey6kqzzuhirk88w2de.png","2026-05-07",[1770],"Olivier Campeau","gitaly-on-kubernetes-generally-available",{"title":1773,"description":1774,"heroImage":1775,"category":1039,"date":1776,"authors":1777,"slug":1779,"externalUrl":1043},"Automatisez les étapes de votre cycle de développement avec GitLab CI/CD","GitLab CI/CD automatise vos builds, tests et déploiements depuis une plateforme DevSecOps unifiée. Découvrez son fonctionnement, ses composants clés et ses fonctionnalités avancées pour des cycles de livraison plus rapides et fiables.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1775561395/bhe1as7ttjvzltxwgo5m.png","2026-04-22",[1778,1762],"Charlotte Delbosc","what-is-gitlab-ci-cd",{"promotions":1781},[1782,1796,1808,1820],{"id":1783,"categories":1784,"header":1786,"text":1787,"button":1788,"image":1793},"ai-modernization",[1785],"ai","L'IA tient-elle ses promesses à grande échelle ?","Le questionnaire ne prendra pas plus de 5 minutes.",{"text":1789,"config":1790},"Obtenez votre score de maturité IA",{"href":1791,"dataGaName":1792,"dataGaLocation":1272},"/fr-fr/assessments/ai-modernization-assessment/","modernization assessment",{"config":1794},{"src":1795},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1797,"categories":1798,"header":1800,"text":1787,"button":1801,"image":1805},"devops-modernization",[1799,1039],"product","Vous contentez-vous de gérer des outils ou de livrer des innovations ?",{"text":1802,"config":1803},"Obtenez votre score de maturité DevOps",{"href":1804,"dataGaName":1792,"dataGaLocation":1272},"/fr-fr/assessments/devops-modernization-assessment/",{"config":1806},{"src":1807},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1809,"categories":1810,"header":1812,"text":1787,"button":1813,"image":1817},"security-modernization",[1811],"security","Faut-il sacrifier la rapidité pour garantir la sécurité ?",{"text":1814,"config":1815},"Obtenez votre score de maturité en matière de sécurité",{"href":1816,"dataGaName":1792,"dataGaLocation":1272},"/fr-fr/assessments/security-modernization-assessment/",{"config":1818},{"src":1819},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1821,"paths":1822,"header":1825,"text":1826,"button":1827,"image":1832},"github-azure-migration",[1823,1824],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Votre équipe est-elle prête pour la migration de GitHub vers Azure ?","GitHub a déjà commencé sa migration vers Azure. Découvrez ce que cela signifie pour vous.",{"text":1828,"config":1829},"Découvrez les différences entre GitLab et GitHub",{"href":1830,"dataGaName":1831,"dataGaLocation":1272},"/fr-fr/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1833},{"src":1807},{"header":1835,"blurb":1836,"button":1837,"secondaryButton":1841},"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":1067,"config":1838},{"href":1839,"dataGaName":1070,"dataGaLocation":1840},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":1395,"config":1842},{"href":1397,"dataGaName":1075,"dataGaLocation":1840},1786803776758]