Qu'est-ce que la gestion du code source ?
La gestion du code source (SCM) est la pratique consistant à suivre, examiner et gérer les modifications apportées au code source et aux fichiers de projet associés. La SCM offre aux équipes logicielles un historique fiable des modifications, de leurs auteurs et de la manière dont les modifications passent du développement à un code source partagé, puis en production.
La gestion du code source (SCM) permet aux équipes de développement de travailler en parallèle sans perdre le travail des uns et des autres. Les équipes peuvent créer des branches, enregistrer des modifications dans des commits, examiner les mises à jour proposées, résoudre les conflits et revenir à une version antérieure, le cas échéant. Dans le développement logiciel moderne, la SCM est étroitement liée au contrôle de version, à la revue de code, à la sécurité et au CI/CD.
La gestion du code source utilise un dépôt et un système de contrôle de version pour organiser les modifications apportées à un projet. Le dépôt stocke le code source et peut également contenir la configuration, les scripts de build, les tests, la documentation et d'autres fichiers nécessaires pour le développement et la livraison de logiciels.
La SCM est souvent utilisée de manière interchangeable avec le contrôle du code source et le contrôle de version. En pratique, le contrôle de version décrit le système qui enregistre les révisions, tandis que la SCM peut également faire référence aux workflows de collaboration et de livraison plus larges élaborés autour de ces révisions.
Un dépôt bien géré devient une source de vérité partagée pour le projet. Les équipes de développement peuvent inspecter l'état actuel du code, comparer les révisions, comprendre le contexte derrière une modification et collaborer sans dépendre de fichiers échangés manuellement ou de transferts non documentés.
Un workflow de SCM connecte des modifications individuelles à un résultat examiné et traçable. Les commandes exactes et le modèle de gestion de branches varient en fonction de l'équipe, mais le processus de base se compose généralement des étapes suivantes :
1. Créer ou cloner un dépôt
Une équipe crée un dépôt pour un projet ou clone un dépôt existant vers un environnement de développement local. Chaque développeur peut travailler avec les fichiers et l'historique dont il a besoin pour accomplir sa tâche tout en restant connecté au projet partagé.
2. Créer une branche pour effectuer une modification
Une branche fournit une ligne de développement distincte. Les équipes de développement peuvent travailler sur une fonctionnalité ou une correction, ou effectuer des tests sans modifier la branche partagée par défaut avant que le travail ne soit prêt. Les branches à court terme peuvent faciliter la revue de modifications et réduire le risque d'enchevêtrement avec des tâches n'ayant aucun rapport.
3. Enregistrer la progression dans des commits
Un commit enregistre un ensemble de modifications liées à un moment donné. Des commits ciblés permettent à plusieurs membres d'une équipe de mieux comprendre la modification, de l'examiner, d'identifier la raison d'une régression ou de rétablir la version précédente du projet. Un message de commit utile décrit ce qui a été modifié et explique la raison de la modification. Ce contexte permet aux futurs contributeurs de comprendre l'historique du projet sans devoir réfléchir au raisonnement ayant mené à la décision finale.
4. Partager et examiner une modification
Les équipes de développement effectuent un push de leur branche vers le dépôt partagé et ouvrent une merge request. Une merge request offre aux relecteurs un espace pour examiner les modifications proposées, discuter des détails de mise en œuvre, vérifier les résultats automatisés et confirmer que la mise à jour respecte les normes de l'équipe. Dans GitLab, les merge requests peuvent être combinées avec des règles d'approbation, des branches protégées et des pipelines automatisés pour créer un chemin contrôlé vers la branche par défaut. En savoir plus sur la gestion du code source GitLab.
5. Résoudre des conflits et fusionner
Lorsque deux branches modifient des parties qui se chevauchent dans un projet, il est alors possible que le système de SCM identifie un conflit. Les contributeurs concernés peuvent examiner les modifications concernées, décider du résultat correct et mettre à jour la branche avant le merge. Une fois la modification approuvée et les vérifications requises effectuées, elle peut ensuite être fusionnée dans la branche partagée. L'historique résultant fournit un enregistrement de la modification et de son contexte de revue.
6. Valider, mettre à disposition et rétablir
La SCM peut connecter une modification à des builds, des tests, des contrôles de sécurité et des workflows de déploiement automatisés. Si une mise à jour provoque un problème inattendu, l'équipe peut utiliser l'historique du projet pour comparer les révisions, annuler une modification ou restaurer un état connu comme étant fonctionnel.
La SCM réduit le risque opérationnel lié au développement logiciel collaboratif et offre aux équipes un moyen reproductible de gérer les modifications.
Collaborer sans écraser le travail effectué
Plusieurs développeurs peuvent travailler sur des branches distinctes et regrouper leurs modifications grâce à la revue et à la gestion des merges de branches. Cette approche est plus sûre et plus transparente que l'échange manuel de fichiers ou la dépendance à une coordination informelle.
Comprendre une modification et sa justification
L'historique d'un dépôt enregistre les modifications au fil du temps. Les équipes peuvent utiliser les commits, les branches, les merge requests et les discussions associées pour comprendre l'évolution d'une fonctionnalité et la localisation d'un éventuel bogue.
Améliorer la qualité grâce à la revue de code et à l'automatisation
La SCM rend les modifications de code visibles avant qu'elles n'atteignent la branche partagée. L'association d'une revue de code à des tests automatisés et à d'autres vérifications permet aux équipes de détecter les problèmes plus tôt et d'appliquer des normes cohérentes.
Apprendre des erreurs
Étant donné que les révisions sont conservées, les équipes peuvent comparer l'état actuel du projet aux versions précédentes et annuler les modifications, le cas échéant. Cette approche offre un filet de sécurité pour l'expérimentation et la reprise après incident.
Établir la gouvernance et la responsabilité
La SCM peut contrôler les personnes autorisées à modifier des branches protégées, celles devant approuver les mises à jour et les vérifications devant être validées préalablement au merge d'une modification. L'historique d'audit permet également aux équipes de comprendre des actions importantes dans un projet.
Ces termes se chevauchent, mais font ressortir différentes étapes du workflow de développement.
| Terme | Signification |
|---|---|
| Contrôle de version | Système permettant d'enregistrer, de comparer et d'annuler des révisions de fichiers au fil du temps. |
| Contrôle du code source | Autre terme courant pour désigner le contrôle de version, plus particulièrement lorsqu'il fait référence au code source. |
| Gestion du code source | Pratique consistant à utiliser le contrôle de version, ainsi que la collaboration, la revue, la gouvernance et les workflows associés pour gérer des modifications apportées au code source. |
| Dépôt | Emplacement du projet où sont stockés les fichiers sources et leur historique de révision. |
Les systèmes de contrôle de version sont généralement décrits comme étant centralisés ou distribués.
Contrôle de version centralisé
Un système centralisé conserve l'historique principal d'un projet dans un dépôt central. Les développeurs se connectent généralement à ce système pour se procurer des fichiers et envoyer des modifications. Ce modèle est certes simple à comprendre et à administrer, mais les tâches peuvent dépendre davantage de l'accès au réseau et du service central.
Contrôle de version distribué
Un système distribué donne aux développeurs une copie locale du dépôt et de son historique. Les développeurs peuvent créer des branches, inspecter l'historique et effectuer de nombreuses modifications localement avant de les partager avec le dépôt distant. Git est un système de contrôle de version distribué couramment utilisé pour le développement logiciel collaboratif.
Choisir un modèle
Le bon modèle dépend du workflow de l'équipe, de la taille du dépôt, de la connectivité, des exigences en matière de gouvernance et des contraintes opérationnelles. Pour nombre d'équipes modernes, l'important n'est pas seulement la méthode de stockage des révisions, mais aussi le mode de fonctionnement entre l'accès au dépôt, la revue de code, l'automatisation, la sécurité et la conformité autour de ces révisions.
Comment l'IA fait-elle évoluer la gestion du code source ? Découvrez la gestion du code source de nouvelle génération conçue pour les équipes logicielles travaillant avec des humains et des agents d'IA.
Lors de l'évaluation d'une plateforme SCM, prenez en compte l'ensemble du workflow plutôt que l'espace de stockage du dépôt seul.
Fonctionnalités de dépôt et de gestion de branches
Recherchez une prise en charge fiable de Git, une organisation claire des dépôts, des workflows pratiques pour la gestion de branches et des outils permettant aux équipes de travailler avec la version actuelle d'un projet.
Revue de code et approbations
La revue de code doit faire partie du workflow de modification. Envisagez des merge requests ou des pull requests, des discussions inline, des approbations obligatoires, l'attribution de relecteurs et la visibilité des commentaires non résolus.
Contrôle d'accès et gouvernance
Les équipes peuvent avoir besoin d'autorisations granulaires, de branches protégées, de politiques d'approbation, d'événements d'audit et de contrôles de conformité. Ces fonctionnalités permettent aux entreprises d'appliquer des règles cohérentes sans que tout ne repose sur une application manuelle.
CI/CD intégré et vérifications automatisées
Les modifications apportées au code source doivent être faciles à valider grâce à des builds, tests, scans de sécurité et workflows de déploiement automatisés. Un workflow connecté évite que la revue de code et la livraison ne fonctionnent comme des processus déconnectés.
Sécurité et protection des secrets
Évaluez comment la plateforme permet de protéger le code source et les données sensibles. Des fonctionnalités pertinentes peuvent inclure la gestion des autorisations, la détection des secrets, les tests de vulnérabilité et les contrôles des développeurs autorisés à effectuer un push ou à fusionner des modifications.
Expérience développeur et intégrations
Prenez en compte la facilité avec laquelle les développeurs peuvent cloner, modifier, examiner et contribuer. Les outils de développement basés sur le Web, les intégrations, la mise en miroir de dépôts et la prise en charge des workflows existants peuvent réduire les frictions d'adoption.
Mise à l'échelle et flexibilité de déploiement
Les grandes organisations ou celles distribuées doivent évaluer les performances du dépôt, l'administration, la disponibilité, les exigences en matière de données et les options de déploiement. GitLab prend en charge des modèles de déploiement hébergés dans le cloud, autogérés et monolocataires pour répondre aux différents besoins organisationnels. Explorez la plateforme GitLab.
La SCM fournit l'historique des modifications et la couche de collaboration dont dépend la livraison automatisée de logiciels. Un commit ou une merge request peut déclencher un pipeline qui crée l'application, exécute des tests, effectue des contrôles de sécurité, crée des paquets d'artefacts et effectue un déploiement vers un environnement.
Cette relation offre aux équipes un chemin traçable, allant d'une modification de code jusqu'à son résultat de validation et de livraison. Elle permet également aux équipes de voir si des contrôles requis ont validé une modification avant d'arriver à une branche protégée ou un environnement de production.
GitLab inclut la gestion du code source et le CI/CD dans la même application. Ses conseils publics en matière de CI/CD considèrent le dépôt comme un emplacement réservé au code source, à la configuration, aux bibliothèques, aux tests et aux scripts de build, alors que ses conseils de mise en œuvre relient les dépôts Git, la gestion de branches, les approbations de merges, les branches protégées et le CI/CD intégré.
Une mise en œuvre pratique peut commencer à petite échelle et progressivement gagner en maturité.
1. Créer ou migrer un dépôt Git
Choisissez la structure du projet, la branche par défaut, le modèle de propriété et les paramètres de dépôt. Si le code reste chez un autre fournisseur Git pendant une transition, définissez la manière dont les dépôts et workflows de livraison resteront synchronisés.
2. Choisir une stratégie de gestion de branches et de merge
Sélectionnez un workflow adapté à la cadence de release et au profil de risque de l'équipe. Définissez le moment où les branches sont créées, leur durée de vie et comment la branche par défaut hérite des modifications.
3. Établir des règles de revue et de protection
Utilisez des merge requests pour des modifications collaboratives. Définissez les relecteurs requis, les règles d'approbation, les branches protégées, les responsabilités de propriété et les conditions à respecter avant un merge.
4. Automatiser la validation avec le CI/CD
Ajoutez des pipelines qui créent et testent des modifications de manière cohérente. Développez progressivement le pipeline avec des contrôles de sécurité, l'empaquetage, la validation de l'environnement et des étapes de déploiement correspondant aux besoins du projet.
5. Appliquer des contrôles de sécurité et de conformité
Protégez les identifiants et les paramètres sensibles, restreignez les actions à fort impact et documentez les politiques appliquées aux dépôts et aux workflows de livraison. Les contrôles appropriés dépendent de l'organisation, du projet et de l'environnement réglementaire.
6. Mesurer et améliorer le workflow
Examinez des signaux, tels que le délai de revue, le délai entre une approbation et son merge, les modifications ayant échoué, la fréquence des retours à la version précédente et les performances de livraison. Utilisez ces mesures pour identifier les goulots d'étranglement et non pour récompenser les équipes qui optimisent leur activité.
- Validez régulièrement des modifications ciblées et connexes afin de créer des points de contrôle utiles.
- Rédigez des messages de commit expliquant l'intention et le contexte de la modification.
- Commencez à travailler sur une version actuellement disponible dans le dépôt.
- Utilisez des branches pour isoler des modifications et des merge requests afin de les examiner.
- Maintenez la stabilité de la branche par défaut et protégez-la de toute modification non examinée.
- Automatisez les tests et vérifications répétables avant tout merge.
- Définissez les responsabilités de propriété et d'approbation en cas de code important.
- Protégez les secrets, les identifiants et les paramètres de projet sensibles.
- Définissez un workflow de gestion de branches et de merge que l'équipe peut suivre de manière cohérente.
- Utilisez l'historique du dépôt pour vous renseigner sur des régressions et améliorer les prochaines modifications.
GitLab regroupe la gestion du code source basée sur Git, la revue de code, le CI/CD, la sécurité et la gouvernance sur une seule et même plateforme. Les équipes peuvent utiliser un dépôt partagé et un workflow de gestion de branches tout en appliquant les contrôles et l'automatisation nécessaires pour faire passer un logiciel de l'étape de modification à celle de livraison.
Foire aux questions
Foire aux questions
La SCM est la pratique consistant à suivre, examiner et gérer les modifications apportées au code source et aux fichiers de projet connexes. Elle permet aux équipes de collaborer, de conserver l'historique, de résoudre des conflits et de contrôler la manière dont les modifications atteignent les branches partagées et la production.
La SCM et le contrôle de version sont souvent utilisés de manière interchangeable. Le contrôle de version enregistre les révisions de fichiers, alors que la SCM peut également décrire les workflows de collaboration, de revue, de gouvernance et de livraison associés.
Git est un système de contrôle de version distribué. GitLab est une plateforme qui fournit des dépôts Git, ainsi que des fonctionnalités de revue de code, de CI/CD, de sécurité, de gouvernance et d'autres fonctionnalités du cycle de développement logiciel.
Un dépôt de code source est un emplacement de stockage des fichiers source et de l'historique des modifications d'un projet. Il offre aux contributeurs un espace partagé pour collaborer et fournit les informations de révision nécessaires pour comparer, examiner et récupérer des modifications.
Les branches créent des lignes de développement distinctes afin que les contributeurs puissent travailler sur des fonctionnalités, des correctifs ou des expérimentations sans modifier la branche partagée par défaut avant que le travail soit prêt. Les modifications peuvent être examinées et fusionnées ultérieurement.
Les entreprises doivent prendre en compte les fonctionnalités de dépôt et de gestion de branche, la revue de code, les autorisations, les approbations, l'auditabilité, la sécurité, la conformité, le CI/CD, les intégrations, la mise à l'échelle, le modèle de déploiement et l'expérience développeur.
Commencez à développer plus rapidement dès aujourd'hui
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.