[{"data":1,"prerenderedAt":2589},["ShallowReactive",2],{"/fr-fr/blog/github-to-gitlab-migration-made-easy":3,"navigation-fr-fr":1854,"banner-fr-fr":2276,"footer-fr-fr":2283,"blog-post-authors-fr-fr-Fernando Diaz":2529,"blog-related-posts-fr-fr-github-to-gitlab-migration-made-easy":2544,"blog-share-wrapper-fr-fr":2570,"next-steps-fr-fr":2580},{"id":4,"title":5,"authors":6,"body":8,"category":1832,"date":1833,"description":1834,"extension":1835,"externalUrl":1836,"faq":1836,"featured":1837,"heroImage":1838,"meta":1839,"navigation":1370,"path":1840,"seo":1841,"slug":1846,"stem":1847,"tags":1848,"template":1852,"updatedDate":1836,"__hash__":1853},"blogPosts/fr-fr/blog/github-to-gitlab-migration-made-easy.md","Migrer de GitHub vers GitLab : mode d'emploi",[7],"Fernando Diaz",{"type":9,"value":10,"toc":1812},"minimark",[11,33,56,59,74,79,88,91,275,280,283,337,341,354,373,407,410,430,434,441,448,452,455,459,462,506,511,560,564,567,599,603,611,748,751,776,785,789,792,814,817,821,824,827,880,884,894,1052,1063,1067,1084,1087,1132,1155,1158,1166,1175,1179,1182,1330,1344,1524,1531,1606,1611,1660,1671,1675,1678,1729,1732,1769,1772,1775,1808],[12,13,14,15,19,20,26,27,32],"p",{},"Si vous envisagez de passer de GitHub à GitLab, la première question qui se pose est presque toujours la même : ",[16,17,18],"em",{},"Quelle est la complexité de la migration ?"," Pour la plupart des équipes ",[21,22,25],"a",{"href":23,"rel":24},"https://about.gitlab.com/fr-fr/topics/devsecops/",[],"DevSecOps",", la crainte d'un travail fastidieux constitue le principal obstacle qui les sépare d'une ",[21,28,31],{"href":29,"rel":30},"https://about.gitlab.com/fr-fr/platform/",[],"plateforme DevSecOps"," unifiée d'IA native.",[12,34,35,36,42,43,48,49,55],{},"Migrer vers GitLab n'a jamais été aussi simple. L'outil d'importation intégré de GitLab transfère automatiquement et en arrière-plan la grande majorité des données de vos projets. Par ailleurs, la conversion de votre ",[21,37,41],{"href":38,"rel":39,"title":40},"https://about.gitlab.com/fr-fr/topics/ci-cd/cicd-pipeline/",[],"Qu'est-ce qu'un pipeline CI/CD ?","pipeline CI/CD",", une tâche qui nécessitait traditionnellement une intervention humaine, est désormais en grande partie prise en charge par ",[21,44,47],{"href":45,"rel":46},"https://about.gitlab.com/fr-fr/gitlab-duo/",[],"GitLab Duo",". GitLab Duo, notre assistant d'IA native, peut convertir les workflows GitHub Actions en pipelines ",[21,50,54],{"href":51,"rel":52,"title":53},"https://about.gitlab.com/fr-fr/blog/what-is-gitlab-ci-cd/",[],"Qu'est-ce que GitLab CI/CD ?","GitLab CI/CD",".",[12,57,58],{},"Dans cet article, nous vous guidons à travers l'ensemble du processus de migration.",[60,61,62],"blockquote",{},[12,63,64,65,73],{},"🎯 Migrez de ",[21,66,69],{"href":67,"rel":68},"https://about.gitlab.com/fr-fr/free-trial/devsecops/?utm_medium=blog&utm_source=blog&utm_campaign=eg_emea_x_trial_x_fr_blog_fr",[],[70,71,72],"strong",{},"GitHub vers GitLab"," dès aujourd'hui !",[75,76,78],"h2",{"id":77},"quelles-données-sont-migrées-de-github-vers-gitlab","Quelles données sont migrées de GitHub vers GitLab ?",[12,80,81,82,87],{},"L'",[21,83,86],{"href":84,"rel":85},"https://docs.gitlab.com/user/project/import/github/",[],"outil d'importation GitHub intégré"," à GitLab est accessible directement depuis l'interface de création de projet de GitLab et s'exécute en arrière-plan, ce qui vous permet de lancer une importation et de vaquer à vos occupations. La plupart des données de votre projet sont transférées automatiquement. Un ensemble plus restreint d'éléments correspond à des options facultatives ou présente des limitations qu'il est utile de connaître à l'avance.",[12,89,90],{},"Le tableau ci-dessous détaille les éléments migrés et leur mode de transfert :",[92,93,94,107],"table",{},[95,96,97],"thead",{},[98,99,100,104],"tr",{},[101,102,103],"th",{},"Données",[101,105,106],{},"Statut",[108,109,110,119,127,135,142,149,156,163,170,177,190,198,206,222,234,248,261],"tbody",{},[98,111,112,116],{},[113,114,115],"td",{},"Dépôt, branches, tags et historique des commits Git",[113,117,118],{},"✅ Automatique. Inclut les branches dupliquées pour les pull requests ouvertes.",[98,120,121,124],{},[113,122,123],{},"Tickets",[113,125,126],{},"✅ Automatique",[98,128,129,132],{},[113,130,131],{},"Pull requests (deviennent des merge requests)",[113,133,134],{},"✅ Automatique. Inclut les revues, les commentaires de revue, les suggestions, les relecteurs assignés et les informations « fusionné par ».",[98,136,137,140],{},[113,138,139],{},"Commentaires sur les tickets et les pull requests",[113,141,126],{},[98,143,144,147],{},[113,145,146],{},"Labels et jalons",[113,148,126],{},[98,150,151,154],{},[113,152,153],{},"Contenu des notes de release",[113,155,126],{},[98,157,158,161],{},[113,159,160],{},"Pages wiki",[113,162,126],{},[98,164,165,168],{},[113,166,167],{},"Règles de protection des branches",[113,169,126],{},[98,171,172,175],{},[113,173,174],{},"Événements liés aux tickets et aux pull requests",[113,176,126],{},[98,178,179,182],{},[113,180,181],{},"Collaborateurs (membres)",[113,183,184,185,189],{},"⚠️ Avec limitations. Option facultative (activée par défaut). Nécessite la portée ",[186,187,188],"code",{},"read:org"," ; les rôles GitHub sont mappés aux rôles GitLab (voir ci-dessous). Les rôles personnalisés de GitHub Enterprise Cloud ne sont pas pris en charge et doivent être ajoutés manuellement.",[98,191,192,195],{},[113,193,194],{},"Pièces jointes au format Markdown (dans les descriptions, les commentaires et les releases)",[113,196,197],{},"⚠️ Avec limitations. Option facultative. Les pièces jointes des dépôts privés antérieures à mai 2023 ne peuvent pas être importées (limitation de GitHub) ; les importations depuis GitHub Enterprise Server ne concernent que les images et les vidéos.",[98,199,200,203],{},[113,201,202],{},"Volumes importants de commentaires (Plus de 30 000 env.)",[113,204,205],{},"⚠️ Avec limitations. Activez l'importation alternative des commentaires pour contourner les limites de l'API GitHub par ticket. Les commentaires antérieurs à 2017 peuvent être importés sous forme de fils de discussion distincts.",[98,207,208,211],{},[113,209,210],{},"Objets Git LFS",[113,212,213,214,217,218,221],{},"⚠️ Avec limitations. LFS doit être activé sur le projet ",[70,215,216],{},"de destination"," ",[16,219,220],{},"avant"," le lancement de l'importation, faute de quoi les objets sont ignorés sans avertissement.",[98,223,224,227],{},[113,225,226],{},"Workflows GitHub Actions",[113,228,229,230,233],{},"🛠️ Manuel (assisté par l'IA). Convertis en fichier ",[186,231,232],{},".gitlab-ci.yml",". GitLab Duo peut effectuer la majeure partie de ce travail à votre place.",[98,235,236,239],{},[113,237,238],{},"Secrets → variables CI/CD",[113,240,241,242,247],{},"🛠️ Manuel. Recréez les secrets sous forme de ",[21,243,246],{"href":244,"rel":245},"https://docs.gitlab.com/ci/variables/",[],"variables CI/CD"," (marquez-les comme masquées/protégées) avant d'exécuter les pipelines.",[98,249,250,253],{},[113,251,252],{},"Vérifications de statut requises",[113,254,255,256,55],{},"🛠️ Manuel. Recréez-les sous forme de ",[21,257,260],{"href":258,"rel":259},"https://docs.gitlab.com/user/project/merge_requests/status_checks/",[],"vérifications de statut externes",[98,262,263,266],{},[113,264,265],{},"Organisations GitHub / regroupements",[113,267,268,269,274],{},"❌ Non migré. Structurez les ",[21,270,273],{"href":271,"rel":272},"https://docs.gitlab.com/user/group/",[],"groupes et sous-groupes"," GitLab en conséquence.",[276,277,279],"h3",{"id":278},"comment-les-rôles-sont-ils-mappés","Comment les rôles sont-ils mappés ?",[12,281,282],{},"GitHub et GitLab utilisent des conventions de nommage différentes ; un mappage est donc effectué lors de la migration. Lors de l'importation des collaborateurs, les rôles GitHub sont associés aux rôles GitLab de la façon suivante :",[92,284,285,295],{},[95,286,287],{},[98,288,289,292],{},[101,290,291],{},"Rôle GitHub",[101,293,294],{},"Rôle GitLab",[108,296,297,305,313,321,329],{},[98,298,299,302],{},[113,300,301],{},"Lecture",[113,303,304],{},"Invité",[98,306,307,310],{},[113,308,309],{},"Triage",[113,311,312],{},"Rapporteur",[98,314,315,318],{},[113,316,317],{},"Écriture",[113,319,320],{},"Développeur",[98,322,323,326],{},[113,324,325],{},"Gestion",[113,327,328],{},"Chargé de maintenance",[98,330,331,334],{},[113,332,333],{},"Administration",[113,335,336],{},"Propriétaire",[75,338,340],{"id":339},"prérequis","Prérequis",[12,342,343,344,347,348,353],{},"Les prérequis se sont ",[16,345,346],{},"simplifiés"," au fil des années. Il n'est notamment plus nécessaire que chaque auteur GitHub dispose d'une adresse e-mail publique correspondante sur GitLab. GitLab gère désormais automatiquement l'attribution grâce au ",[21,349,352],{"href":350,"rel":351},"https://docs.gitlab.com/user/project/import/#user-contribution-and-membership-mapping",[],"mappage des contributions des utilisateurs"," (GitLab 17.8 et versions ultérieures). Vous trouverez plus d'informations à ce sujet ci-dessous.",[12,355,356,357,360,361,364,365,368,369,372],{},"Pour importer depuis ",[70,358,359],{},"GitHub.com"," ou ",[70,362,363],{},"GitHub Enterprise Server"," vers ",[70,366,367],{},"GitLab.com"," ou une instance ",[70,370,371],{},"GitLab Self-Managed",", vous avez besoin :",[374,375,376,383,389,400],"ul",{},[377,378,379,382],"li",{},[70,380,381],{},"D'un accès au projet GitHub source"," que vous souhaitez importer.",[377,384,385,388],{},[70,386,387],{},"Du rôle de chargé de maintenance ou de propriétaire"," au sein du groupe GitLab de destination.",[377,390,391,394,395,55],{},[70,392,393],{},"De la source d'importation GitHub activée",". Elle est activée par défaut sur GitLab.com ; sur GitLab Self-Managed, un administrateur doit l'activer dans les ",[21,396,399],{"href":397,"rel":398},"https://docs.gitlab.com/administration/settings/visibility_and_access_controls/#configure-allowed-import-sources",[],"sources d'importation",[377,401,402,403,406],{},"L'organisation GitHub ne doit ",[70,404,405],{},"pas restreindre l'accès aux applications tierces"," (ou vous devez lui accorder l'accès lors de l'autorisation).",[12,408,409],{},"Quelques prérequis spécifiques à certaines situations :",[374,411,412,421],{},[377,413,414,417,418,420],{},[70,415,416],{},"Vous souhaitez importer des objets Git LFS ?"," Activez LFS sur le projet de destination ",[16,419,220],{}," de lancer l'importation.",[377,422,423,426,427,429],{},[70,424,425],{},"Vous souhaitez importer des collaborateurs ?"," Vous devez disposer de la portée ",[186,428,188],{}," sur votre token et d'au moins un accès Écriture ou Gestion sur le projet GitHub.",[276,431,433],{"id":432},"les-adresses-e-mail-correspondantes-ne-sont-plus-nécessaires","Les adresses e-mail correspondantes ne sont plus nécessaires",[12,435,436,437,440],{},"Auparavant, l'historique des contributions n'était correctement transféré que si l'adresse e-mail publique de chaque utilisateur GitHub correspondait à son adresse e-mail GitLab.\nDésormais, GitLab crée des ",[70,438,439],{},"utilisateurs fictifs"," pour tout auteur, assigné ou relecteur GitHub ne disposant pas de compte GitLab correspondant, et préserve leurs contributions.",[12,442,443,444,447],{},"Après l'importation, un propriétaire ou chargé de maintenance du groupe accède à ",[70,445,446],{},"Membres → Espaces réservés"," et réassigne chaque utilisateur fictif à l'utilisateur GitLab réel, qui accepte ensuite la réassignation. Vous pouvez ainsi effectuer la migration en premier et régler la question de l'attribution ultérieurement.",[75,449,451],{"id":450},"réaliser-limportation","Réaliser l'importation",[12,453,454],{},"Trois méthodes permettent de lancer l'importation. Choisissez celle qui correspond à votre source et à votre échelle.",[276,456,458],{"id":457},"méthode-1-linterface-utilisateur-avec-github-oauth-recommandée-pour-gitlabcom","Méthode 1 : l'interface utilisateur avec GitHub OAuth (recommandée pour GitLab.com)",[12,460,461],{},"C'est la méthode la plus rapide pour la plupart des équipes.",[463,464,465,478,485,492,499],"ol",{},[377,466,467,468,471,472,477],{},"Accédez à un groupe et sélectionnez ",[70,469,470],{},"Créer un projet → Importer un projet → GitHub"," (ou accédez directement à ",[21,473,476],{"href":474,"rel":475},"https://gitlab.com/projects/new#import_project",[],"gitlab.com/projects/new#import_project",").",[377,479,480,481,484],{},"Cliquez sur le bouton ",[70,482,483],{},"S'authentifier avec GitHub"," et approuvez l'application OAuth.",[377,486,487,488,491],{},"Pour les dépôts d'organisation, cliquez sur ",[70,489,490],{},"Accorder"," à côté du nom de l'organisation pour autoriser l'accès.",[377,493,494,495,498],{},"Filtrez vos dépôts à l'aide des onglets ",[70,496,497],{},"Propriétaire / Collaborateur / Organisation",", puis sélectionnez les dépôts à importer. Vous pouvez les renommer et choisir l'espace de nommage GitLab cible.",[377,500,501,502,505],{},"Configurez les options facultatives (voir le tableau ci-dessous), puis cliquez sur ",[70,503,504],{},"Importer",". L'importation s'exécute en arrière-plan ; vous pouvez quitter la page et revenir vérifier l'avancement ultérieurement.",[12,507,508],{},[70,509,510],{},"Options facultatives :",[92,512,513,526],{},[95,514,515],{},[98,516,517,520,523],{},[101,518,519],{},"Option",[101,521,522],{},"Par défaut",[101,524,525],{},"À utiliser quand",[108,527,528,539,550],{},[98,529,530,533,536],{},[113,531,532],{},"Importer les collaborateurs",[113,534,535],{},"Activée",[113,537,538],{},"Vous souhaitez transférer les membres du projet avec le mappage des rôles.",[98,540,541,544,547],{},[113,542,543],{},"Importer les pièces jointes Markdown",[113,545,546],{},"Désactivée",[113,548,549],{},"Vous souhaitez récupérer les images et fichiers intégrés dans les descriptions, commentaires et releases.",[98,551,552,555,557],{},[113,553,554],{},"Utiliser l'importation alternative des commentaires",[113,556,546],{},[113,558,559],{},"Votre projet compte ~30 000 commentaires ou plus et vous atteignez les limites de l'API GitHub.",[276,561,563],{"id":562},"méthode-2-jeton-daccès-personnel-lorsque-oauth-nest-pas-configuré","Méthode 2 : jeton d'accès personnel (lorsque OAuth n'est pas configuré)",[12,565,566],{},"Si OAuth n'est pas configuré, authentifiez-vous à l'aide d'un jeton.",[463,568,569,587,592],{},[377,570,571,572,575,576,579,580,583,584,586],{},"Créez un jeton d'accès personnel ",[70,573,574],{},"classique"," sur ",[186,577,578],{},"github.com/settings/tokens/new"," avec la portée ",[186,581,582],{},"repo"," (ajoutez ",[186,585,188],{}," si vous importez des collaborateurs ou des objets LFS). Remarque : les jetons d'accès à granularité fine ne sont pas pris en charge.",[377,588,589,590,55],{},"Dans GitLab, accédez à un groupe et sélectionnez ",[70,591,470],{},[377,593,594,595,598],{},"Collez le jeton, sélectionnez ",[70,596,597],{},"S'authentifier",", puis suivez les mêmes étapes de sélection et de configuration que pour la méthode OAuth.",[276,600,602],{"id":601},"méthode-3-lapi-rest-importations-en-masse-et-scripts","Méthode 3 : l'API REST (importations en masse et scripts)",[12,604,605,606,55],{},"Pour migrer de nombreux dépôts simultanément, automatiser un transfert ou importer des dépôts publics dont vous n'êtes pas propriétaire, utilisez l'",[21,607,610],{"href":608,"rel":609},"https://docs.gitlab.com/api/import/",[],"API d'importation",[612,613,618],"pre",{"className":614,"code":615,"language":616,"meta":617,"style":617},"language-bash shiki shiki-themes github-light","curl --request POST \\\n  --url \"https://gitlab.com/api/v4/import/github\" \\\n  --header \"PRIVATE-TOKEN: $GITLAB_TOKEN\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n    \"personal_access_token\": \"\u003Cgithub_classic_pat>\",\n    \"repo_id\": 12345678,\n    \"target_namespace\": \"my-group\",\n    \"new_name\": \"imported-project\",\n    \"optional_stages\": {\n      \"single_endpoint_notes_import\": true,\n      \"attachments_import\": true,\n      \"collaborators_import\": true\n    }\n  }'\n","bash","",[186,619,620,640,651,669,679,688,694,700,706,712,718,724,730,736,742],{"__ignoreMap":617},[621,622,625,629,633,637],"span",{"class":623,"line":624},"line",1,[621,626,628],{"class":627},"s7eDp","curl",[621,630,632],{"class":631},"sYu0t"," --request",[621,634,636],{"class":635},"sYBdl"," POST",[621,638,639],{"class":631}," \\\n",[621,641,643,646,649],{"class":623,"line":642},2,[621,644,645],{"class":631},"  --url",[621,647,648],{"class":635}," \"https://gitlab.com/api/v4/import/github\"",[621,650,639],{"class":631},[621,652,654,657,660,664,667],{"class":623,"line":653},3,[621,655,656],{"class":631},"  --header",[621,658,659],{"class":635}," \"PRIVATE-TOKEN: ",[621,661,663],{"class":662},"sgsFI","$GITLAB_TOKEN",[621,665,666],{"class":635},"\"",[621,668,639],{"class":631},[621,670,672,674,677],{"class":623,"line":671},4,[621,673,656],{"class":631},[621,675,676],{"class":635}," \"Content-Type: application/json\"",[621,678,639],{"class":631},[621,680,682,685],{"class":623,"line":681},5,[621,683,684],{"class":631},"  --data",[621,686,687],{"class":635}," '{\n",[621,689,691],{"class":623,"line":690},6,[621,692,693],{"class":635},"    \"personal_access_token\": \"\u003Cgithub_classic_pat>\",\n",[621,695,697],{"class":623,"line":696},7,[621,698,699],{"class":635},"    \"repo_id\": 12345678,\n",[621,701,703],{"class":623,"line":702},8,[621,704,705],{"class":635},"    \"target_namespace\": \"my-group\",\n",[621,707,709],{"class":623,"line":708},9,[621,710,711],{"class":635},"    \"new_name\": \"imported-project\",\n",[621,713,715],{"class":623,"line":714},10,[621,716,717],{"class":635},"    \"optional_stages\": {\n",[621,719,721],{"class":623,"line":720},11,[621,722,723],{"class":635},"      \"single_endpoint_notes_import\": true,\n",[621,725,727],{"class":623,"line":726},12,[621,728,729],{"class":635},"      \"attachments_import\": true,\n",[621,731,733],{"class":623,"line":732},13,[621,734,735],{"class":635},"      \"collaborators_import\": true\n",[621,737,739],{"class":623,"line":738},14,[621,740,741],{"class":635},"    }\n",[621,743,745],{"class":623,"line":744},15,[621,746,747],{"class":635},"  }'\n",[12,749,750],{},"Suivez la progression avec :",[612,752,754],{"className":614,"code":753,"language":616,"meta":617,"style":617},"curl --header \"PRIVATE-TOKEN: $GITLAB_TOKEN\" \\\n  \"https://gitlab.com/api/v4/projects/\u003Cproject_id>/import\"\n",[186,755,756,771],{"__ignoreMap":617},[621,757,758,760,763,765,767,769],{"class":623,"line":624},[621,759,628],{"class":627},[621,761,762],{"class":631}," --header",[621,764,659],{"class":635},[621,766,663],{"class":662},[621,768,666],{"class":635},[621,770,639],{"class":631},[621,772,773],{"class":623,"line":642},[621,774,775],{"class":635},"  \"https://gitlab.com/api/v4/projects/\u003Cproject_id>/import\"\n",[12,777,778,779,781,782,55],{},"Vous aurez besoin d'un jeton d'accès personnel GitHub classique avec la portée ",[186,780,582],{}," et d'un jeton d'accès personnel GitLab avec la portée ",[186,783,784],{},"api",[276,786,788],{"id":787},"vérification-de-limportation","Vérification de l'importation",[12,790,791],{},"Une fois l'importation terminée, effectuez une vérification rapide :",[463,793,794,805,808],{},[377,795,796,797,800,801,804],{},"Ouvrez le nouveau projet et observez la bannière de statut passer par les étapes ",[16,798,799],{},"planifié → démarré → terminé",".\nSi elle indique ",[70,802,803],{},"terminé partiellement",", examinez les entités ayant échoué.",[377,806,807],{},"Comparez le nombre de branches, de tags, de SHA de commits, de tickets, de merge requests, de labels et de jalons avec la source.",[377,809,810,811,55],{},"Vérifiez que les éléments importés portent le badge ",[70,812,813],{},"Importé",[12,815,816],{},"Une nouvelle importation crée une nouvelle copie (il n'est pas possible d'importer dans un projet existant) ; par conséquent, si quelque chose semble incorrect, supprimez le projet et relancez l'importation.",[75,818,820],{"id":819},"faire-coexister-github-et-gitlab-lors-dune-migration-progressive","Faire coexister GitHub et GitLab lors d'une migration progressive",[12,822,823],{},"La migration ne doit pas nécessairement se faire d'un seul coup. La plupart des équipes procèdent progressivement, en conservant GitHub actif le temps de mettre en place GitLab, de valider les pipelines et de faire migrer les équipes une par une. GitLab est conçu pour coexister avec GitHub pendant cette transition, ce qui vous permet de l'adopter progressivement plutôt que de tout transférer d'un coup.",[12,825,826],{},"Voici les principales façons dont les deux plateformes fonctionnent en parallèle pendant la migration :",[374,828,829,847,862,874],{},[377,830,831,834,835,840,841,846],{},[70,832,833],{},"Maintien de la synchronisation des dépôts grâce à la mise en miroir par pull."," GitLab peut\n",[21,836,839],{"href":837,"rel":838},"https://docs.gitlab.com/user/project/repository/mirror/pull/",[],"mettre en miroir un dépôt GitHub par pull",", en récupérant automatiquement les nouvelles branches et les nouveaux commits selon un calendrier défini. Les équipes de développement peuvent continuer à effectuer des push vers GitHub, tandis que GitLab reste à jour, vous offrant ainsi une copie en lecture seule et en temps réel pour tester vos pipelines CI/CD et vos workflows avant que quiconque ne modifie ses habitudes. Lorsque vous êtes prêt à tout transférer, vous pouvez passer à la\n",[21,842,845],{"href":843,"rel":844},"https://docs.gitlab.com/user/project/repository/mirror/push/",[],"mise en miroir par push"," afin que les modifications apportées dans GitLab soient répercutées sur GitHub pour les équipes qui y travaillent encore.",[377,848,849,852,853,858,859,861],{},[70,850,851],{},"Exécution des pipelines sur des dépôts GitHub avec le CI/CD pour les dépôts externes."," Si vous souhaitez évaluer GitLab CI/CD avant de déplacer le code, le ",[21,854,857],{"href":855,"rel":856},"https://docs.gitlab.com/ci/ci_cd_for_external_repos/github_integration/",[],"CI/CD pour les dépôts externes"," connecte un dépôt GitHub à GitLab et exécute des pipelines à chaque push et pull request, en renvoyant le statut vers GitHub. Vous pouvez ainsi\nvalider la conversion de votre fichier ",[186,860,232],{}," à l'aide de commits réels, tandis que la source de vérité reste encore hébergée sur GitHub.",[377,863,864,867,868,873],{},[70,865,866],{},"Publication du statut CI/CD vers GitHub."," Grâce à l'",[21,869,872],{"href":870,"rel":871},"https://docs.gitlab.com/integration/github/",[],"intégration GitHub",", GitLab envoie les mises à jour de statut des pipelines et des commits à GitHub, de sorte que les équipes de développement qui n'ont pas encore migré voient toujours les indicateurs de réussite et les résultats de build dans l'interface qu'ils utilisent déjà.",[377,875,876,879],{},[70,877,878],{},"Migration équipe par équipe, dépôt par dépôt."," L'outil d'importation fonctionnant projet par projet, vous pouvez commencer par migrer les dépôts d'une équipe, leur laisser le temps de s'adapter, puis migrer le groupe suivant une fois les éventuels problèmes résolus. Les groupes et sous-groupes qui n'ont pas encore été migrés peuvent continuer à pointer vers GitHub en attendant.",[75,881,883],{"id":882},"migrer-de-github-actions-vers-gitlab-cicd","Migrer de GitHub Actions vers GitLab CI/CD",[12,885,886,887,893],{},"Le ",[21,888,892],{"href":889,"rel":890,"title":891},"https://about.gitlab.com/fr-fr/topics/ci-cd/",[],"Qu'est-ce que le CI/CD ?","CI/CD"," est l'une des étapes de la migration qui n'est pas automatique. C'est l'occasion pour vous de moderniser vos pipelines. De nombreux concepts fondamentaux s'alignent entre les deux plateformes :",[92,895,896,905],{},[95,897,898],{},[98,899,900,903],{},[101,901,902],{},"GitHub Actions",[101,904,54],{},[108,906,907,918,926,933,944,962,982,994,1005,1017,1027,1040],{},[98,908,909,914],{},[113,910,911],{},[186,912,913],{},".github/workflows/*.yml",[113,915,916],{},[186,917,232],{},[98,919,920,923],{},[113,921,922],{},"Workflow",[113,924,925],{},"Pipeline",[98,927,928,931],{},[113,929,930],{},"Job",[113,932,930],{},[98,934,935,938],{},[113,936,937],{},"Étape dans un job",[113,939,940,941],{},"Ligne dans ",[186,942,943],{},"script:",[98,945,946,953],{},[113,947,948,949,952],{},"Déclencheurs d'événements (",[186,950,951],{},"on:",")",[113,954,955,958,959],{},[186,956,957],{},"rules:"," / ",[186,960,961],{},"workflow:",[98,963,964,972],{},[113,965,966,958,969],{},[186,967,968],{},"runs-on:",[186,970,971],{},"container:",[113,973,974,977,978,981],{},[186,975,976],{},"image:"," et ",[186,979,980],{},"tags:"," du runner",[98,983,984,987],{},[113,985,986],{},"Actions Marketplace",[113,988,989],{},[21,990,993],{"href":991,"rel":992},"https://docs.gitlab.com/ci/components/",[],"Composants CI/CD",[98,995,996,999],{},[113,997,998],{},"Secrets",[113,1000,1001],{},[21,1002,1004],{"href":244,"rel":1003},[],"Variables CI/CD",[98,1006,1007,1012],{},[113,1008,1009],{},[186,1010,1011],{},"strategy.matrix",[113,1013,1014],{},[186,1015,1016],{},"parallel.matrix",[98,1018,1019,1024],{},[113,1020,1021],{},[186,1022,1023],{},"actions/checkout",[113,1025,1026],{},"Intégré (GitLab clone automatiquement)",[98,1028,1029,1034],{},[113,1030,1031],{},[186,1032,1033],{},"actions/cache",[113,1035,1036,1037],{},"Mot-clé ",[186,1038,1039],{},"cache:",[98,1041,1042,1047],{},[113,1043,1044],{},[186,1045,1046],{},"actions/upload-artifact",[113,1048,1036,1049],{},[186,1050,1051],{},"artifacts:",[12,1053,1054,1055,1058,1059,1062],{},"Une différence clé à garder à l'esprit : dans GitLab, ",[70,1056,1057],{},"les étapes s'exécutent de manière séquentielle et les jobs au sein d'une étape s'exécutent en parallèle",", et vous pouvez utiliser ",[186,1060,1061],{},"needs:"," pour construire un graphe orienté acyclique (DAG) explicite.",[276,1064,1066],{"id":1065},"la-méthode-rapide-laisser-gitlab-duo-convertir-vos-workflows","La méthode rapide : laisser GitLab Duo convertir vos workflows",[12,1068,1069,1074,1075,1080,1081,1083],{},[21,1070,1073],{"href":1071,"rel":1072},"https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/",[],"GitLab Duo Agent Platform"," inclut un ",[21,1076,1079],{"href":1077,"rel":1078},"https://docs.gitlab.com/user/duo_agent_platform/flows/foundational_flows/convert_to_gitlab_ci/",[],"flow Convert to GitLab CI/CD"," qui transforme vos workflows GitHub Actions en ",[186,1082,232],{},", vous permettant ainsi de relire un brouillon plutôt que de tout réécrire de zéro.",[12,1085,1086],{},"GitLab Duo vous accompagne tout au long de la migration, pas seulement lors de la conversion :",[374,1088,1089,1095,1101,1107,1113,1123],{},[377,1090,1091,1094],{},[70,1092,1093],{},"Planification"," : générez un plan de migration par dépôt et une évaluation de la complexité à partir de vos fichiers de workflow.",[377,1096,1097,1100],{},[70,1098,1099],{},"Conversion"," : le flow Convert to GitLab CI/CD réécrit les workflows GitHub Actions en pipelines GitLab CI/CD, en préservant les builds matriciels, les dépendances entre les jobs, les artefacts et les règles conditionnelles.",[377,1102,1103,1106],{},[70,1104,1105],{},"Documentation"," : mettez à jour les fichiers README, les badges et les liens (par exemple, « Pull Request » → « Merge Request »).",[377,1108,1109,1112],{},[70,1110,1111],{},"Validation"," : recoupez les nombres d'éléments importés et identifiez les éventuels manquants.",[377,1114,1115,1118,1119,1122],{},[70,1116,1117],{},"Débogage"," : le ",[70,1120,1121],{},"flow Fix CI/CD Pipeline"," analyse un job en échec, identifie la cause probable et prépare les modifications recommandées.",[377,1124,1125,1128,1129,1131],{},[70,1126,1127],{},"Optimisation"," : recommandez des optimisations natives à GitLab telles que la mise en cache, les DAG avec ",[186,1130,1061],{}," et les composants CI/CD.",[12,1133,1134,1139,1140,1145,1146,1148,1149,55],{},[21,1135,1138],{"href":1136,"rel":1137},"https://docs.gitlab.com/user/gitlab_duo_chat/agentic_chat/",[],"GitLab Duo Agentic Chat"," peut extraire le contexte de vos tickets, merge requests et pipelines pour répondre à vos questions directement dans la plateforme, et ",[21,1141,1144],{"href":1142,"rel":1143},"https://docs.gitlab.com/user/project/repository/code_suggestions/",[],"GitLab Duo Code Suggestions"," vous assiste lorsque vous modifiez le fichier ",[186,1147,232],{}," dans le Web ",[21,1150,1154],{"href":1151,"rel":1152,"title":1153},"https://about.gitlab.com/fr-fr/blog/what-is-an-ide/",[],"Qu'est-ce qu'un IDE ?","IDE",[12,1156,1157],{},"Si GitLab Duo n'est pas disponible dans votre environnement, ces mêmes conversions fonctionnent bien avec un modèle de pointe en utilisant un prompt structuré. Voici un prompt qui produit des résultats fiables :",[60,1159,1160],{},[12,1161,1162,1163,1165],{},"Convertis ce workflow GitHub Actions en GitLab CI/CD. Conserve les builds matriciels, les dépendances entre jobs, les artefacts et les règles conditionnelles. Renvoie un fichier ",[186,1164,232],{}," valide.",[12,1167,1168,1169,1174],{},"Quelques précautions lors de l'utilisation d'un assistant d'IA pour la migration : ne collez jamais de secrets, de jetons ou de noms d'hôtes internes ; validez toujours le YAML généré à l'aide de l'",[21,1170,1173],{"href":1171,"rel":1172},"https://docs.gitlab.com/ci/yaml/lint/",[],"outil CI Lint"," de GitLab ; et traitez le résultat comme un brouillon à réviser, non comme un commit définitif.",[276,1176,1178],{"id":1177},"la-méthode-manuelle-un-exemple-comparatif","La méthode manuelle : un exemple comparatif",[12,1180,1181],{},"Que GitLab Duo génère le code ou que vous l'écriviez vous-même, il est utile de visualiser la correspondance. Voici un workflow GitHub Actions typique de build et de test :",[612,1183,1187],{"className":1184,"code":1185,"language":1186,"meta":617,"style":617},"language-yaml shiki shiki-themes github-light","name: CI\non: [push, pull_request]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-node@v4\n        with: { node-version: '18' }\n      - run: npm install\n      - run: npm test\n      - run: npm run build\n","yaml",[186,1188,1189,1201,1221,1229,1236,1246,1253,1266,1277,1296,1308,1319],{"__ignoreMap":617},[621,1190,1191,1195,1198],{"class":623,"line":624},[621,1192,1194],{"class":1193},"shJU0","name",[621,1196,1197],{"class":662},": ",[621,1199,1200],{"class":635},"CI\n",[621,1202,1203,1206,1209,1212,1215,1218],{"class":623,"line":642},[621,1204,1205],{"class":631},"on",[621,1207,1208],{"class":662},": [",[621,1210,1211],{"class":635},"push",[621,1213,1214],{"class":662},", ",[621,1216,1217],{"class":635},"pull_request",[621,1219,1220],{"class":662},"]\n",[621,1222,1223,1226],{"class":623,"line":653},[621,1224,1225],{"class":1193},"jobs",[621,1227,1228],{"class":662},":\n",[621,1230,1231,1234],{"class":623,"line":671},[621,1232,1233],{"class":1193},"  build",[621,1235,1228],{"class":662},[621,1237,1238,1241,1243],{"class":623,"line":681},[621,1239,1240],{"class":1193},"    runs-on",[621,1242,1197],{"class":662},[621,1244,1245],{"class":635},"ubuntu-latest\n",[621,1247,1248,1251],{"class":623,"line":690},[621,1249,1250],{"class":1193},"    steps",[621,1252,1228],{"class":662},[621,1254,1255,1258,1261,1263],{"class":623,"line":696},[621,1256,1257],{"class":662},"      - ",[621,1259,1260],{"class":1193},"uses",[621,1262,1197],{"class":662},[621,1264,1265],{"class":635},"actions/checkout@v4\n",[621,1267,1268,1270,1272,1274],{"class":623,"line":702},[621,1269,1257],{"class":662},[621,1271,1260],{"class":1193},[621,1273,1197],{"class":662},[621,1275,1276],{"class":635},"actions/setup-node@v4\n",[621,1278,1279,1282,1285,1288,1290,1293],{"class":623,"line":708},[621,1280,1281],{"class":1193},"        with",[621,1283,1284],{"class":662},": { ",[621,1286,1287],{"class":1193},"node-version",[621,1289,1197],{"class":662},[621,1291,1292],{"class":635},"'18'",[621,1294,1295],{"class":662}," }\n",[621,1297,1298,1300,1303,1305],{"class":623,"line":714},[621,1299,1257],{"class":662},[621,1301,1302],{"class":1193},"run",[621,1304,1197],{"class":662},[621,1306,1307],{"class":635},"npm install\n",[621,1309,1310,1312,1314,1316],{"class":623,"line":720},[621,1311,1257],{"class":662},[621,1313,1302],{"class":1193},[621,1315,1197],{"class":662},[621,1317,1318],{"class":635},"npm test\n",[621,1320,1321,1323,1325,1327],{"class":623,"line":726},[621,1322,1257],{"class":662},[621,1324,1302],{"class":1193},[621,1326,1197],{"class":662},[621,1328,1329],{"class":635},"npm run build\n",[12,1331,1332,1333,1336,1337,1340,1341,1343],{},"Ci-dessous l'équivalent avec GitLab CI/CD. Notez que le checkout disparaît (GitLab se charge du clonage), ",[186,1334,1335],{},"runs-on"," devient ",[186,1338,1339],{},"image"," et chaque étape devient une ligne dans ",[186,1342,943],{}," :",[612,1345,1347],{"className":1184,"code":1346,"language":1186,"meta":617,"style":617},"stages: [test, build]\n\n# GitLab-maintained SAST is one line away\n# a nice upgrade to add during migration.\ninclude:\n  - template: Jobs/SAST.gitlab-ci.yml\n\ntest:\n  stage: test\n  image: node:18\n  script:\n    - npm install\n    - npm test\n\nbuild:\n  stage: build\n  image: node:18\n  script:\n    - npm install\n    - npm run build\n  artifacts:\n    paths: [dist/]\n",[186,1348,1349,1366,1372,1378,1383,1390,1403,1407,1413,1423,1433,1440,1447,1453,1457,1463,1473,1482,1489,1496,1503,1511],{"__ignoreMap":617},[621,1350,1351,1354,1356,1359,1361,1364],{"class":623,"line":624},[621,1352,1353],{"class":1193},"stages",[621,1355,1208],{"class":662},[621,1357,1358],{"class":635},"test",[621,1360,1214],{"class":662},[621,1362,1363],{"class":635},"build",[621,1365,1220],{"class":662},[621,1367,1368],{"class":623,"line":642},[621,1369,1371],{"emptyLinePlaceholder":1370},true,"\n",[621,1373,1374],{"class":623,"line":653},[621,1375,1377],{"class":1376},"sAwPA","# GitLab-maintained SAST is one line away\n",[621,1379,1380],{"class":623,"line":671},[621,1381,1382],{"class":1376},"# a nice upgrade to add during migration.\n",[621,1384,1385,1388],{"class":623,"line":681},[621,1386,1387],{"class":1193},"include",[621,1389,1228],{"class":662},[621,1391,1392,1395,1398,1400],{"class":623,"line":690},[621,1393,1394],{"class":662},"  - ",[621,1396,1397],{"class":1193},"template",[621,1399,1197],{"class":662},[621,1401,1402],{"class":635},"Jobs/SAST.gitlab-ci.yml\n",[621,1404,1405],{"class":623,"line":696},[621,1406,1371],{"emptyLinePlaceholder":1370},[621,1408,1409,1411],{"class":623,"line":702},[621,1410,1358],{"class":1193},[621,1412,1228],{"class":662},[621,1414,1415,1418,1420],{"class":623,"line":708},[621,1416,1417],{"class":1193},"  stage",[621,1419,1197],{"class":662},[621,1421,1422],{"class":635},"test\n",[621,1424,1425,1428,1430],{"class":623,"line":714},[621,1426,1427],{"class":1193},"  image",[621,1429,1197],{"class":662},[621,1431,1432],{"class":635},"node:18\n",[621,1434,1435,1438],{"class":623,"line":720},[621,1436,1437],{"class":1193},"  script",[621,1439,1228],{"class":662},[621,1441,1442,1445],{"class":623,"line":726},[621,1443,1444],{"class":662},"    - ",[621,1446,1307],{"class":635},[621,1448,1449,1451],{"class":623,"line":732},[621,1450,1444],{"class":662},[621,1452,1318],{"class":635},[621,1454,1455],{"class":623,"line":738},[621,1456,1371],{"emptyLinePlaceholder":1370},[621,1458,1459,1461],{"class":623,"line":744},[621,1460,1363],{"class":1193},[621,1462,1228],{"class":662},[621,1464,1466,1468,1470],{"class":623,"line":1465},16,[621,1467,1417],{"class":1193},[621,1469,1197],{"class":662},[621,1471,1472],{"class":635},"build\n",[621,1474,1476,1478,1480],{"class":623,"line":1475},17,[621,1477,1427],{"class":1193},[621,1479,1197],{"class":662},[621,1481,1432],{"class":635},[621,1483,1485,1487],{"class":623,"line":1484},18,[621,1486,1437],{"class":1193},[621,1488,1228],{"class":662},[621,1490,1492,1494],{"class":623,"line":1491},19,[621,1493,1444],{"class":662},[621,1495,1307],{"class":635},[621,1497,1499,1501],{"class":623,"line":1498},20,[621,1500,1444],{"class":662},[621,1502,1329],{"class":635},[621,1504,1506,1509],{"class":623,"line":1505},21,[621,1507,1508],{"class":1193},"  artifacts",[621,1510,1228],{"class":662},[621,1512,1514,1517,1519,1522],{"class":623,"line":1513},22,[621,1515,1516],{"class":1193},"    paths",[621,1518,1208],{"class":662},[621,1520,1521],{"class":635},"dist/",[621,1523,1220],{"class":662},[12,1525,1526,1527,1336,1529,1343],{},"Les builds matriciels se traduisent tout aussi directement : ",[186,1528,1011],{},[186,1530,1016],{},[612,1532,1534],{"className":1184,"code":1533,"language":1186,"meta":617,"style":617},"test:\n  image: node:${NODE_VERSION}\n  parallel:\n    matrix:\n      - NODE_VERSION: ['16', '18', '20']\n  script:\n    - npm install\n    - npm test\n",[186,1535,1536,1542,1551,1558,1565,1588,1594,1600],{"__ignoreMap":617},[621,1537,1538,1540],{"class":623,"line":624},[621,1539,1358],{"class":1193},[621,1541,1228],{"class":662},[621,1543,1544,1546,1548],{"class":623,"line":642},[621,1545,1427],{"class":1193},[621,1547,1197],{"class":662},[621,1549,1550],{"class":635},"node:${NODE_VERSION}\n",[621,1552,1553,1556],{"class":623,"line":653},[621,1554,1555],{"class":1193},"  parallel",[621,1557,1228],{"class":662},[621,1559,1560,1563],{"class":623,"line":671},[621,1561,1562],{"class":1193},"    matrix",[621,1564,1228],{"class":662},[621,1566,1567,1569,1572,1574,1577,1579,1581,1583,1586],{"class":623,"line":681},[621,1568,1257],{"class":662},[621,1570,1571],{"class":1193},"NODE_VERSION",[621,1573,1208],{"class":662},[621,1575,1576],{"class":635},"'16'",[621,1578,1214],{"class":662},[621,1580,1292],{"class":635},[621,1582,1214],{"class":662},[621,1584,1585],{"class":635},"'20'",[621,1587,1220],{"class":662},[621,1589,1590,1592],{"class":623,"line":690},[621,1591,1437],{"class":1193},[621,1593,1228],{"class":662},[621,1595,1596,1598],{"class":623,"line":696},[621,1597,1444],{"class":662},[621,1599,1307],{"class":635},[621,1601,1602,1604],{"class":623,"line":702},[621,1603,1444],{"class":662},[621,1605,1318],{"class":635},[12,1607,1608,1609,1343],{},"Et les déploiements conditionnels correspondent à ",[186,1610,957],{},[612,1612,1614],{"className":1184,"code":1613,"language":1186,"meta":617,"style":617},"deploy:\n  stage: deploy\n  script: ./deploy.sh\n  rules:\n    - if: $CI_COMMIT_BRANCH == \"main\"\n",[186,1615,1616,1623,1632,1641,1648],{"__ignoreMap":617},[621,1617,1618,1621],{"class":623,"line":624},[621,1619,1620],{"class":1193},"deploy",[621,1622,1228],{"class":662},[621,1624,1625,1627,1629],{"class":623,"line":642},[621,1626,1417],{"class":1193},[621,1628,1197],{"class":662},[621,1630,1631],{"class":635},"deploy\n",[621,1633,1634,1636,1638],{"class":623,"line":653},[621,1635,1437],{"class":1193},[621,1637,1197],{"class":662},[621,1639,1640],{"class":635},"./deploy.sh\n",[621,1642,1643,1646],{"class":623,"line":671},[621,1644,1645],{"class":1193},"  rules",[621,1647,1228],{"class":662},[621,1649,1650,1652,1655,1657],{"class":623,"line":681},[621,1651,1444],{"class":662},[621,1653,1654],{"class":1193},"if",[621,1656,1197],{"class":662},[621,1658,1659],{"class":635},"$CI_COMMIT_BRANCH == \"main\"\n",[12,1661,1662,1663,1665,1666,55],{},"Dès que vous effectuez un commit du fichier ",[186,1664,232],{},", GitLab exécute immédiatement le pipeline.\nPour en savoir plus, consultez notre ",[21,1667,1670],{"href":1668,"rel":1669},"https://docs.gitlab.com/ci/",[],"documentation sur GitLab CI/CD",[75,1672,1674],{"id":1673},"depuis-quelles-autres-plateformes-gitlab-peut-elle-effectuer-une-importation","Depuis quelles autres plateformes GitLab peut-elle effectuer une importation ?",[12,1676,1677],{},"GitHub n'est pas la seule source. L'outil d'importation de GitLab prend en charge la migration depuis plusieurs autres plateformes :",[374,1679,1680,1687,1694,1701,1708,1715,1722],{},[377,1681,1682],{},[21,1683,1686],{"href":1684,"rel":1685},"https://docs.gitlab.com/user/project/import/bitbucket/",[],"Bitbucket Cloud",[377,1688,1689],{},[21,1690,1693],{"href":1691,"rel":1692},"https://docs.gitlab.com/user/project/import/bitbucket_server/",[],"Bitbucket Server (Stash)",[377,1695,1696],{},[21,1697,1700],{"href":1698,"rel":1699},"https://docs.gitlab.com/user/project/import/fogbugz/",[],"FogBugz",[377,1702,1703],{},[21,1704,1707],{"href":1705,"rel":1706},"https://docs.gitlab.com/user/import/gitea/",[],"Gitea",[377,1709,1710],{},[21,1711,1714],{"href":1712,"rel":1713},"https://docs.gitlab.com/user/project/import/repo_by_url/",[],"Dépôt par URL",[377,1716,1717],{},[21,1718,1721],{"href":1719,"rel":1720},"https://docs.gitlab.com/user/project/import/manifest/",[],"Fichier manifeste (AOSP)",[377,1723,1724],{},[21,1725,1728],{"href":1726,"rel":1727},"https://docs.gitlab.com/user/project/import/jira/",[],"Jira (tickets uniquement)",[12,1730,1731],{},"Nous disposons également d'une documentation couvrant les migrations depuis :",[374,1733,1734,1741,1748,1755,1762],{},[377,1735,1736],{},[21,1737,1740],{"href":1738,"rel":1739},"https://docs.gitlab.com/user/import/#import-from-subversion",[],"SVN",[377,1742,1743],{},[21,1744,1747],{"href":1745,"rel":1746},"https://docs.gitlab.com/user/project/import/clearcase/",[],"ClearCase",[377,1749,1750],{},[21,1751,1754],{"href":1752,"rel":1753},"https://docs.gitlab.com/user/project/import/cvs/",[],"CVS",[377,1756,1757],{},[21,1758,1761],{"href":1759,"rel":1760},"https://docs.gitlab.com/user/project/import/perforce/",[],"Perforce",[377,1763,1764],{},[21,1765,1768],{"href":1766,"rel":1767},"https://docs.gitlab.com/user/project/import/tfvc/",[],"TFVC",[1770,1771],"hr",{},[12,1773,1774],{},"Merci de votre attention ! La migration n'a pas à être la partie redoutée de l'adoption d'une nouvelle plateforme. GitLab transfère vos données automatiquement, et GitLab Duo prend en charge la conversion CI/CD, vous permettant ainsi de vous concentrer sur la livraison. Pour aller plus loin, consultez les liens suivants :",[374,1776,1777,1784,1790,1797,1802],{},[377,1778,1779],{},[21,1780,1783],{"href":1781,"rel":1782},"https://about.gitlab.com/fr-fr/gitlab-duo-agent-platform/?utm_medium=blog&utm_source=blog&utm_campaign=eg_emea_x_trial_x_fr_blog_fr",[],"Essai gratuit de GitLab Duo Agent Platform",[377,1785,1786],{},[21,1787,1789],{"href":84,"rel":1788},[],"Documentation sur la migration de projets de GitHub vers GitLab",[377,1791,1792],{},[21,1793,1796],{"href":1794,"rel":1795},"https://docs.gitlab.com/user/project/import/#available-project-importers",[],"Outils d'importation de projets disponibles",[377,1798,1799],{},[21,1800,1073],{"href":1071,"rel":1801},[],[377,1803,1804],{},[21,1805,1807],{"href":1668,"rel":1806},[],"Documentation GitLab CI/CD",[1809,1810,1811],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":617,"searchDepth":642,"depth":642,"links":1813},[1814,1817,1820,1826,1827,1831],{"id":77,"depth":642,"text":78,"children":1815},[1816],{"id":278,"depth":653,"text":279},{"id":339,"depth":642,"text":340,"children":1818},[1819],{"id":432,"depth":653,"text":433},{"id":450,"depth":642,"text":451,"children":1821},[1822,1823,1824,1825],{"id":457,"depth":653,"text":458},{"id":562,"depth":653,"text":563},{"id":601,"depth":653,"text":602},{"id":787,"depth":653,"text":788},{"id":819,"depth":642,"text":820},{"id":882,"depth":642,"text":883,"children":1828},[1829,1830],{"id":1065,"depth":653,"text":1066},{"id":1177,"depth":653,"text":1178},{"id":1673,"depth":642,"text":1674},"devsecops","2026-08-19","Découvrez comment migrer facilement de GitHub vers GitLab grâce à l'outil d'importation de projets de GitLab et à GitLab Duo.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773856365/gsx2c0vqlswox3ldmq88.jpg",{},"/fr-fr/blog/github-to-gitlab-migration-made-easy",{"ogTitle":5,"ogImage":1838,"ogDescription":1834,"ogSiteName":1842,"noIndex":1837,"ogType":1843,"ogUrl":1844,"title":1845,"canonicalUrls":1844,"description":1834},"https://about.gitlab.com","article","https://about.gitlab.com/blog/github-to-gitlab-migration-made-easy","Migrer de GitHub vers GitLab en toute simplicité","github-to-gitlab-migration-made-easy","fr-fr/blog/github-to-gitlab-migration-made-easy",[892,1849,25,1850,1851],"tutorial","DevSecOps platform","AI","BlogPost","66By44_c3ttD3gfVBbFoMuSksoJNoKcIHc64MdHvzt4",{"logo":1855,"freeTrial":1860,"sales":1865,"login":1870,"items":1875,"search":2193,"minimal":2227,"duo":2246,"switchNav":2255,"pricingDeployment":2266},{"config":1856},{"href":1857,"dataGaName":1858,"dataGaLocation":1859},"/fr-fr/","gitlab logo","header",{"text":1861,"config":1862},"Commencer un essai gratuit",{"href":1863,"dataGaName":1864,"dataGaLocation":1859},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr&glm_content=default-saas-trial/","free trial",{"text":1866,"config":1867},"Demander une démo",{"href":1868,"dataGaName":1869,"dataGaLocation":1859},"/fr-fr/sales/?contact-topic=request-demo","sales",{"text":1871,"config":1872},"Connexion",{"href":1873,"dataGaName":1874,"dataGaLocation":1859},"https://gitlab.com/users/sign_in/","sign in",[1876,1951,2039,2044,2118,2171],{"text":1877,"left":1370,"config":1878,"menu":1880},"Plateforme",{"dataNavLevelOne":1879},"platform",{"type":1881,"link":1882,"columns":1886,"feature":1940},"lists",{"text":1883,"config":1884},"Explorer la plateforme",{"href":1885,"dataGaName":1879,"dataGaLocation":1859},"/fr-fr/platform/",[1887,1904,1922],{"title":1888,"items":1889},"Exécution et workflows",[1890,1894,1899],{"text":892,"config":1891},{"href":1892,"dataGaLocation":1859,"dataGaName":1893},"/fr-fr/solutions/continuous-integration/","ci/cd",{"text":1895,"config":1896},"Gestion du code source",{"href":1897,"dataGaLocation":1859,"dataGaName":1898},"/fr-fr/solutions/source-code-management/","source code management",{"text":1900,"config":1901},"Méthode de livraison selon les principes Agile",{"href":1902,"dataGaLocation":1859,"dataGaName":1903},"/fr-fr/solutions/agile-delivery/","agile delivery",{"title":1905,"items":1906},"Sécurité et gouvernance",[1907,1912,1917],{"text":1908,"config":1909},"Test de sécurité des applications",{"href":1910,"dataGaLocation":1859,"dataGaName":1911},"/fr-fr/solutions/application-security-testing/","application security testing",{"text":1913,"config":1914},"Gouvernance et conformité",{"href":1915,"dataGaLocation":1859,"dataGaName":1916},"/fr-fr/solutions/software-compliance/","governance and compliance",{"text":1918,"config":1919},"Sécurité de la chaîne d'approvisionnement",{"href":1920,"dataGaLocation":1859,"dataGaName":1921},"/fr-fr/solutions/supply-chain/","supply chain security",{"title":1923,"items":1924},"Contexte et IA",[1925,1930,1935],{"text":1926,"config":1927},"Orchestration agentique",{"href":1928,"dataGaLocation":1859,"dataGaName":1929},"/fr-fr/gitlab-duo-agent-platform/","agentic orchestration",{"text":1931,"config":1932},"Graphe de contexte",{"href":1933,"dataGaLocation":1859,"dataGaName":1934},"/fr-fr/gitlab-orbit/","context graph",{"text":1936,"config":1937},"Visibilité et mesures",{"href":1938,"dataGaLocation":1859,"dataGaName":1939},"/fr-fr/solutions/visibility-measurement/","visibility and measurement",{"config":1941,"title":1944,"text":1945,"link":1946},{"background":1942,"textColor":1943},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Pourquoi utiliser GitLab","Une plateforme unique offrant une rapidité maîtrisée tout au long du cycle de développement logiciel.",{"text":1947,"config":1948},"En savoir plus",{"href":1949,"dataGaName":1950,"dataGaLocation":1859},"/fr-fr/why-gitlab/","why gitlab",{"text":1952,"left":1370,"config":1953,"menu":1955},"Solutions",{"dataNavLevelOne":1954},"solutions",{"type":1881,"link":1956,"columns":1960,"feature":2030},{"text":1957,"config":1958},"Voir toutes les solutions",{"href":1959,"dataGaName":1954,"dataGaLocation":1859},"/fr-fr/solutions/",[1961,1979,1997],{"title":1962,"items":1963},"Résultats",[1964,1969,1974],{"text":1965,"config":1966},"Modernisation DevOps",{"href":1967,"dataGaLocation":1859,"dataGaName":1968},"/fr-fr/assessments/devops-modernization-assessment/","devops modernization",{"text":1970,"config":1971},"Modernisation de la sécurité",{"href":1972,"dataGaLocation":1859,"dataGaName":1973},"/fr-fr/assessments/security-modernization-assessment/","security modernization",{"text":1975,"config":1976},"Modernisation de l'IA",{"href":1977,"dataGaLocation":1859,"dataGaName":1978},"/fr-fr/assessments/ai-modernization-assessment/","ai modernization",{"title":1980,"items":1981},"Par taille",[1982,1987,1992],{"text":1983,"config":1984},"Entreprises",{"href":1985,"dataGaLocation":1859,"dataGaName":1986},"/fr-fr/enterprise/","enterprise",{"text":1988,"config":1989},"PME",{"href":1990,"dataGaLocation":1859,"dataGaName":1991},"/fr-fr/small-business/","small business",{"text":1993,"config":1994},"Start-up",{"href":1995,"dataGaLocation":1859,"dataGaName":1996},"/fr-fr/solutions/startups/","startups",{"title":1998,"items":1999},"Secteurs",[2000,2005,2010,2015,2020,2025],{"text":2001,"config":2002},"Services financiers",{"href":2003,"dataGaLocation":1859,"dataGaName":2004},"/fr-fr/solutions/finance/","financial services",{"text":2006,"config":2007},"Secteur public",{"href":2008,"dataGaLocation":1859,"dataGaName":2009},"/fr-fr/solutions/public-sector/","public sector",{"text":2011,"config":2012},"Télécommunications",{"href":2013,"dataGaLocation":1859,"dataGaName":2014},"/fr-fr/solutions/telecommunications/","telecommunications",{"text":2016,"config":2017},"Automobile",{"href":2018,"dataGaLocation":1859,"dataGaName":2019},"/fr-fr/solutions/automotive/","automotive",{"text":2021,"config":2022},"Éducation",{"href":2023,"dataGaLocation":1859,"dataGaName":2024},"/fr-fr/solutions/education/","education",{"text":2026,"config":2027},"Aérospatiale",{"href":2028,"dataGaLocation":1859,"dataGaName":2029},"/fr-fr/solutions/aerospace/","aerospace",{"config":2031,"title":2032,"text":2033,"link":2034},{"background":1942,"textColor":1943},"GitLab Transcend","Découvrez les dernières innovations annoncées lors du dernier événement GitLab Transcend.",{"text":2035,"config":2036},"Lire le blog",{"href":2037,"dataGaName":2038,"dataGaLocation":1859},"/fr-fr/blog/gitlab-transcend-announcements/","gitlab transcend",{"text":2040,"config":2041},"Tarifs",{"href":2042,"dataGaName":2043,"dataGaLocation":1859,"dataNavLevelOne":2043},"/fr-fr/pricing/","pricing",{"text":2045,"config":2046,"menu":2048},"Ressources",{"dataNavLevelOne":2047},"resources",{"type":1881,"link":2049,"columns":2053,"feature":2109},{"text":2050,"config":2051},"Afficher toutes les ressources",{"href":2052,"dataGaName":2047,"dataGaLocation":1859},"/fr-fr/resources/",[2054,2081],{"title":2055,"items":2056},"Découvrir",[2057,2061,2066,2071,2076],{"text":1105,"config":2058},{"href":2059,"dataGaName":2060,"dataGaLocation":1859},"https://docs.gitlab.com/","docs",{"text":2062,"config":2063},"GitLab University",{"href":2064,"dataGaName":2065,"dataGaLocation":1859},"https://university.gitlab.com/","university",{"text":2067,"config":2068},"Démos",{"href":2069,"dataGaName":2070,"dataGaLocation":1859},"/fr-fr/gitlab-technical-demo-series/","demo series",{"text":2072,"config":2073},"Centre de démos",{"href":2074,"dataGaName":2075,"dataGaLocation":1859},"/fr-fr/demo-hub/","demo hub",{"text":2077,"config":2078},"Services",{"href":2079,"dataGaName":2080,"dataGaLocation":1859},"/fr-fr/services/","services",{"title":2082,"items":2083},"Connecter",[2084,2089,2094,2099,2104],{"text":2085,"config":2086},"Blog",{"href":2087,"dataGaName":2088,"dataGaLocation":1859},"/fr-fr/blog/","blog",{"text":2090,"config":2091},"Communauté",{"href":2092,"dataGaName":2093,"dataGaLocation":1859},"/community/","community",{"text":2095,"config":2096},"Clients",{"href":2097,"dataGaName":2098,"dataGaLocation":1859},"/fr-fr/customers/","customers",{"text":2100,"config":2101},"Partenaires",{"href":2102,"dataGaName":2103,"dataGaLocation":1859},"/fr-fr/partners/","partners",{"text":2105,"config":2106},"Événements",{"href":2107,"dataGaName":2108,"dataGaLocation":1859},"/events/","events",{"config":2110,"title":2111,"text":2112,"link":2113},{"background":1942,"textColor":1943},"Nouveautés de GitLab","Découvrez les dernières fonctionnalités et améliorations.",{"text":2114,"config":2115},"Lire les articles les plus récents",{"href":2116,"dataGaName":2117,"dataGaLocation":1859},"/fr-fr/whats-new/","whats new",{"text":2119,"config":2120,"menu":2122},"Société",{"dataNavLevelOne":2121},"company",{"type":1881,"columns":2123},[2124],{"items":2125},[2126,2131,2136,2141,2146,2151,2156,2161,2166],{"text":2127,"config":2128},"À propos",{"href":2129,"dataGaName":2130,"dataGaLocation":1859},"/fr-fr/company/","about",{"text":2132,"config":2133,"footerGa":2135},"Carrières",{"href":2134,"dataGaName":1225,"dataGaLocation":1859},"/jobs/",{"dataGaName":1225},{"text":2137,"config":2138},"Presse",{"href":2139,"dataGaName":2140,"dataGaLocation":1859},"/press/","press",{"text":2142,"config":2143},"Manuel",{"href":2144,"dataGaName":2145,"dataGaLocation":1859},"https://handbook.gitlab.com/","handbook",{"text":2147,"config":2148},"Leadership",{"href":2149,"dataGaName":2150,"dataGaLocation":1859},"/company/team/e-group/","leadership",{"text":2152,"config":2153},"Relations avec les investisseurs",{"href":2154,"dataGaName":2155,"dataGaLocation":1859},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":2157,"config":2158},"Trust Center",{"href":2159,"dataGaName":2160,"dataGaLocation":1859},"/fr-fr/security/","trust center",{"text":2162,"config":2163},"Centre pour la transparence de l'IA",{"href":2164,"dataGaName":2165,"dataGaLocation":1859},"/fr-fr/ai-transparency-center/","ai transparency center",{"text":2167,"config":2168},"Newsletter",{"href":2169,"dataGaName":2170,"dataGaLocation":1859},"/company/contact/#contact-forms","newsletter",{"text":2172,"config":2173,"menu":2174},"Nous contacter",{"dataNavLevelOne":2121},{"type":1881,"columns":2175},[2176],{"items":2177},[2178,2183,2188],{"text":2179,"config":2180},"Contacter l'équipe commerciale",{"href":2181,"dataGaName":2182,"dataGaLocation":1859},"/fr-fr/sales/","talk to sales",{"text":2184,"config":2185},"Assistance GitLab",{"href":2186,"dataGaName":2187,"dataGaLocation":1859},"https://support.gitlab.com/hc/en-us","support portal",{"text":2189,"config":2190},"Portail clients GitLab",{"href":2191,"dataGaName":2192,"dataGaLocation":1859},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":2194,"login":2195,"suggestions":2201},"Fermer",{"text":2196,"link":2197},"Pour rechercher des dépôts et des projets, connectez-vous à",{"text":367,"config":2198},{"href":1873,"dataGaName":2199,"dataGaLocation":2200},"search login","search",{"text":2202,"default":2203},"Suggestions",[2204,2207,2212,2214,2219,2224],{"text":2205,"config":2206},"GitLab Duo Agent Platform",{"href":1928,"dataGaName":1073,"dataGaLocation":2200},{"text":2208,"config":2209},"Suggestions de code (IA)",{"href":2210,"dataGaName":2211,"dataGaLocation":2200},"/fr-fr/solutions/code-suggestions/","Code Suggestions (AI)",{"text":892,"config":2213},{"href":1892,"dataGaName":892,"dataGaLocation":2200},{"text":2215,"config":2216},"GitLab sur AWS",{"href":2217,"dataGaName":2218,"dataGaLocation":2200},"/fr-fr/partners/technology-partners/aws/","GitLab on AWS",{"text":2220,"config":2221},"GitLab sur Google Cloud",{"href":2222,"dataGaName":2223,"dataGaLocation":2200},"/fr-fr/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1944,"config":2225},{"href":1949,"dataGaName":2226,"dataGaLocation":2200},"Why GitLab?",{"freeTrial":2228,"mobileIcon":2233,"desktopIcon":2238,"secondaryButton":2241},{"text":2229,"config":2230},"Commencer votre essai gratuit",{"href":2231,"dataGaName":1864,"dataGaLocation":2232},"https://gitlab.com/-/trials/new/","nav",{"altText":2234,"config":2235},"Icône GitLab",{"src":2236,"dataGaName":2237,"dataGaLocation":2232},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":2234,"config":2239},{"src":2240,"dataGaName":2237,"dataGaLocation":2232},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":2242,"config":2243},"Commencer",{"href":2244,"dataGaName":2245,"dataGaLocation":2232},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/fr-fr/get-started/","get started",{"freeTrial":2247,"mobileIcon":2251,"desktopIcon":2253},{"text":2248,"config":2249},"En savoir plus sur GitLab Duo",{"href":1928,"dataGaName":2250,"dataGaLocation":2232},"gitlab duo",{"altText":2234,"config":2252},{"src":2236,"dataGaName":2237,"dataGaLocation":2232},{"altText":2234,"config":2254},{"src":2240,"dataGaName":2237,"dataGaLocation":2232},{"button":2256,"mobileIcon":2261,"desktopIcon":2263},{"text":2257,"config":2258},"/switch",{"href":2259,"dataGaName":2260,"dataGaLocation":2232},"#contact","switch",{"altText":2234,"config":2262},{"src":2236,"dataGaName":2237,"dataGaLocation":2232},{"altText":2234,"config":2264},{"src":2265,"dataGaName":2237,"dataGaLocation":2232},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":2267,"mobileIcon":2272,"desktopIcon":2274},{"text":2268,"config":2269},"Retour aux tarifs",{"href":2042,"dataGaName":2270,"dataGaLocation":2232,"icon":2271},"back to pricing","GoBack",{"altText":2234,"config":2273},{"src":2236,"dataGaName":2237,"dataGaLocation":2232},{"altText":2234,"config":2275},{"src":2240,"dataGaName":2237,"dataGaLocation":2232},{"title":2277,"button":2278,"config":2281},"GitLab Orbit est arrivé : la couche de contexte pour les agents d'IA.",{"text":1947,"config":2279},{"href":1933,"dataGaName":2280,"dataGaLocation":1859},"orbit",{"layout":2282,"disabled":1837},"release",{"data":2284},{"text":2285,"source":2286,"edit":2292,"contribute":2297,"config":2302,"items":2307,"minimal":2521},"Git est une marque déposée de Software Freedom Conservancy et notre utilisation de « GitLab » est sous licence.",{"text":2287,"config":2288},"Afficher le code source de la page",{"href":2289,"dataGaName":2290,"dataGaLocation":2291},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":2293,"config":2294},"Modifier cette page",{"href":2295,"dataGaName":2296,"dataGaLocation":2291},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":2298,"config":2299},"Contribuer",{"href":2300,"dataGaName":2301,"dataGaLocation":2291},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":2303,"facebook":2304,"youtube":2305,"linkedin":2306},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[2308,2352,2405,2447,2488],{"title":2040,"links":2309,"subMenu":2324},[2310,2314,2319],{"text":2311,"config":2312},"Voir les forfaits",{"href":2042,"dataGaName":2313,"dataGaLocation":2291},"view plans",{"text":2315,"config":2316},"GitLab Premium",{"href":2317,"dataGaName":2318,"dataGaLocation":2291},"/fr-fr/pricing/premium/","why premium",{"text":2320,"config":2321},"GitLab Ultimate",{"href":2322,"dataGaName":2323,"dataGaLocation":2291},"/fr-fr/pricing/ultimate/","why ultimate",[2325],{"title":2172,"links":2326},[2327,2329,2331,2333,2337,2342,2347],{"text":2179,"config":2328},{"href":2181,"dataGaName":1869,"dataGaLocation":2291},{"text":2184,"config":2330},{"href":2186,"dataGaName":2187,"dataGaLocation":2291},{"text":2189,"config":2332},{"href":2191,"dataGaName":2192,"dataGaLocation":2291},{"text":106,"config":2334},{"href":2335,"dataGaName":2336,"dataGaLocation":2291},"https://status.gitlab.com/","status",{"text":2338,"config":2339},"Conditions d'utilisation",{"href":2340,"dataGaName":2341,"dataGaLocation":2291},"/terms/","terms of use",{"text":2343,"config":2344},"Politique de confidentialité",{"href":2345,"dataGaName":2346,"dataGaLocation":2291},"/fr-fr/privacy/","privacy statement",{"text":2348,"config":2349},"Gestion des cookies",{"dataGaName":2350,"dataGaLocation":2291,"id":2351,"isOneTrustButton":1370},"cookie preferences","ot-sdk-btn",{"title":1877,"links":2353,"subMenu":2364},[2354,2356,2358,2360,2362],{"text":1883,"config":2355},{"href":1885,"dataGaName":1879,"dataGaLocation":2291},{"text":1926,"config":2357},{"href":1928,"dataGaName":1929,"dataGaLocation":2291},{"text":892,"config":2359},{"href":1892,"dataGaName":1893,"dataGaLocation":2291},{"text":1931,"config":2361},{"href":1933,"dataGaName":1934,"dataGaLocation":2291},{"text":1944,"config":2363},{"href":1949,"dataGaName":1950,"dataGaLocation":2291},[2365],{"title":2366,"links":2367},"Thèmes",[2368,2372,2377,2382,2387,2390,2395,2400],{"text":892,"config":2369},{"href":2370,"dataGaName":2371,"dataGaLocation":2291},"/fr-fr/topics/ci-cd/","cicd",{"text":2373,"config":2374},"GitOps",{"href":2375,"dataGaName":2376,"dataGaLocation":2291},"/fr-fr/topics/gitops/","gitops",{"text":2378,"config":2379},"DevOps",{"href":2380,"dataGaName":2381,"dataGaLocation":2291},"/fr-fr/topics/devops/","devops",{"text":2383,"config":2384},"Contrôle de version",{"href":2385,"dataGaName":2386,"dataGaLocation":2291},"/fr-fr/topics/version-control/","version control",{"text":25,"config":2388},{"href":2389,"dataGaName":1832,"dataGaLocation":2291},"/fr-fr/topics/devsecops/",{"text":2391,"config":2392},"Cloud-native",{"href":2393,"dataGaName":2394,"dataGaLocation":2291},"/fr-fr/topics/cloud-native/","cloud native",{"text":2396,"config":2397},"IA pour la programmation",{"href":2398,"dataGaName":2399,"dataGaLocation":2291},"/fr-fr/topics/devops/ai-for-coding/","ai for coding",{"text":2401,"config":2402},"IA agentique",{"href":2403,"dataGaName":2404,"dataGaLocation":2291},"/fr-fr/topics/agentic-ai/","agentic ai",{"title":1952,"links":2406},[2407,2409,2411,2413,2415,2417,2419,2421,2423,2425,2427,2429,2431,2434,2438,2443],{"text":1965,"config":2408},{"href":1967,"dataGaName":1968,"dataGaLocation":2291},{"text":1970,"config":2410},{"href":1972,"dataGaName":1973,"dataGaLocation":2291},{"text":1975,"config":2412},{"href":1977,"dataGaName":1978,"dataGaLocation":2291},{"text":2001,"config":2414},{"href":2003,"dataGaName":2004,"dataGaLocation":2291},{"text":2006,"config":2416},{"href":2008,"dataGaName":2009,"dataGaLocation":2291},{"text":2011,"config":2418},{"href":2013,"dataGaName":2014,"dataGaLocation":2291},{"text":2016,"config":2420},{"href":2018,"dataGaName":2019,"dataGaLocation":2291},{"text":2021,"config":2422},{"href":2023,"dataGaName":2024,"dataGaLocation":2291},{"text":2026,"config":2424},{"href":2028,"dataGaName":2029,"dataGaLocation":2291},{"text":1983,"config":2426},{"href":1985,"dataGaName":1986,"dataGaLocation":2291},{"text":1988,"config":2428},{"href":1990,"dataGaName":1991,"dataGaLocation":2291},{"text":1993,"config":2430},{"href":1995,"dataGaName":1996,"dataGaLocation":2291},{"text":2373,"config":2432},{"href":2433,"dataGaName":2376,"dataGaLocation":2291},"/fr-fr/solutions/gitops/",{"text":2435,"config":2436},"Analyse de la composition logicielle",{"href":1920,"dataGaName":2437,"dataGaLocation":2291},"software composition analysis",{"text":2439,"config":2440},"Gestion de la chaîne de valeur",{"href":2441,"dataGaName":2442,"dataGaLocation":2291},"/fr-fr/solutions/value-stream-management/","value stream management",{"text":2444,"config":2445},"Toutes les solutions",{"href":1959,"dataGaName":2446,"dataGaLocation":2291},"all solutions",{"title":2045,"links":2448},[2449,2454,2459,2461,2463,2465,2467,2469,2471,2473,2475,2477,2479,2481,2484],{"text":2450,"config":2451},"Installation",{"href":2452,"dataGaName":2453,"dataGaLocation":2291},"/fr-fr/install/","install",{"text":2455,"config":2456},"Guides de démarrage",{"href":2457,"dataGaName":2458,"dataGaLocation":2291},"/fr-fr/get-started/","quick setup checklists",{"text":1105,"config":2460},{"href":2059,"dataGaName":2060,"dataGaLocation":2291},{"text":2062,"config":2462},{"href":2064,"dataGaName":2065,"dataGaLocation":2291},{"text":2067,"config":2464},{"href":2069,"dataGaName":2070,"dataGaLocation":2291},{"text":2072,"config":2466},{"href":2074,"dataGaName":2075,"dataGaLocation":2291},{"text":2077,"config":2468},{"href":2079,"dataGaName":2080,"dataGaLocation":2291},{"text":2085,"config":2470},{"href":2087,"dataGaName":2088,"dataGaLocation":2291},{"text":2090,"config":2472},{"href":2092,"dataGaName":2093,"dataGaLocation":2291},{"text":2095,"config":2474},{"href":2097,"dataGaName":2098,"dataGaLocation":2291},{"text":2100,"config":2476},{"href":2102,"dataGaName":2103,"dataGaLocation":2291},{"text":2105,"config":2478},{"href":2107,"dataGaName":2108,"dataGaLocation":2291},{"text":2167,"config":2480},{"href":2169,"dataGaName":2170,"dataGaLocation":2291},{"text":2482,"config":2483},"Nouveautés",{"href":2116,"dataGaName":2117,"dataGaLocation":2291},{"text":2485,"config":2486},"Toutes les ressources",{"href":2052,"dataGaName":2487,"dataGaLocation":2291},"all resources",{"title":2119,"links":2489},[2490,2492,2494,2496,2498,2500,2502,2504,2506,2511,2516],{"text":2127,"config":2491},{"href":2129,"dataGaName":2121,"dataGaLocation":2291},{"text":2132,"config":2493},{"href":2134,"dataGaName":1225,"dataGaLocation":2291},{"text":2137,"config":2495},{"href":2139,"dataGaName":2140,"dataGaLocation":2291},{"text":2142,"config":2497},{"href":2144,"dataGaName":2145,"dataGaLocation":2291},{"text":2147,"config":2499},{"href":2149,"dataGaName":2150,"dataGaLocation":2291},{"text":2152,"config":2501},{"href":2154,"dataGaName":2155,"dataGaLocation":2291},{"text":2157,"config":2503},{"href":2159,"dataGaName":2160,"dataGaLocation":2291},{"text":2162,"config":2505},{"href":2164,"dataGaName":2165,"dataGaLocation":2291},{"text":2507,"config":2508},"Développement durable",{"href":2509,"dataGaName":2510,"dataGaLocation":2291},"/sustainability/","Sustainability",{"text":2512,"config":2513},"Diversité, inclusion et appartenance (DIB)",{"href":2514,"dataGaName":2515,"dataGaLocation":2291},"/fr-fr/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":2517,"config":2518},"Déclaration de transparence sur l'esclavage moderne",{"href":2519,"dataGaName":2520,"dataGaLocation":2291},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":2522},[2523,2525,2527],{"text":2338,"config":2524},{"href":2340,"dataGaName":2341,"dataGaLocation":2291},{"text":2348,"config":2526},{"dataGaName":2350,"dataGaLocation":2291,"id":2351,"isOneTrustButton":1370},{"text":2343,"config":2528},{"href":2345,"dataGaName":2346,"dataGaLocation":2291},[2530],{"id":2531,"title":7,"body":1836,"config":2532,"content":2534,"description":1836,"extension":2538,"meta":2539,"navigation":1370,"path":2540,"seo":2541,"stem":2542,"__hash__":2543},"blogAuthors/en-us/blog/authors/fernando-diaz.yml",{"template":2533},"BlogAuthor",{"name":7,"config":2535},{"headshot":2536,"ctfId":2537},"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",[2545,2554,2562],{"title":2546,"description":2547,"heroImage":2548,"category":1832,"date":2549,"authors":2550,"slug":2553,"externalUrl":1836},"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",[2551,2552],"Salahddine Aberkan","Maud Leuenberger","cloud-and-devops",{"title":2555,"description":2556,"heroImage":2557,"category":1832,"date":2558,"authors":2559,"slug":2561,"externalUrl":1836},"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",[2560],"Olivier Campeau","gitaly-on-kubernetes-generally-available",{"title":2563,"description":2564,"heroImage":2565,"category":1832,"date":2566,"authors":2567,"slug":2569,"externalUrl":1836},"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",[2568,2552],"Charlotte Delbosc","what-is-gitlab-ci-cd",{"header":2571,"text":2572,"button":2576,"disclaimer":2579},"Commencez votre essai gratuit\n\nde 30 jours\n",[2573,2574,2575],"Accédez à GitLab Duo Agent Platform","Essayez nos fonctionnalités les plus avancées","Automatisez les tâches complexes avec l'IA",{"text":1861,"config":2577},{"href":2578,"dataGaName":1864,"dataGaLocation":2088},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/blog/","Aucune carte de crédit requise.",{"header":2581,"blurb":2582,"button":2583,"secondaryButton":2587},"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":1861,"config":2584},{"href":2585,"dataGaName":1864,"dataGaLocation":2586},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/fr-fr/","feature",{"text":2179,"config":2588},{"href":2181,"dataGaName":1869,"dataGaLocation":2586},1790584125581]