Gérer son code source

27 janvier 2020

Quelle que soit l'ampleur de votre projet, il est très fortement recommandé d’utiliser un outil de gestion de code source pour suivre dans le temps ses différentes versions.

Paramétrez efficacement votre gestionnaire de code source, en pensant à sa sécurité

  • Un gestionnaire de code source est un logiciel permettant de stocker l'ensemble de votre code source et des fichiers associés, tout en conservant la chronologie de toutes les modifications qui ont été apportées. Un simple serveur FTP ne constitue pas un gestionnaire de code source.
  • Paramétrez correctement votre environnement en utilisant les fonctionnalités proposées par votre gestionnaire de code source. Il est recommandé de mettre en place une authentification forte et/ou une authentification par clés SSH dès le début de votre projet.
  • Par ailleurs, attribuez aux utilisateurs de votre gestionnaire de code source des niveaux d'accès à votre projet et définissez pour chacun des niveaux les permissions correspondantes (par exemple, un niveau "invité" avec des droits limités en lecture, un niveau "développeur" avec des droits en écriture, etc.).
  • Faites des sauvegardes régulières de votre système de gestion de code source. En particulier, pensez à sauvegarder votre serveur principal où toutes les modifications sont enregistrées.
  • Mettez en place des procédures de développement pour travailler efficacement même si plusieurs personnes développent en même temps. Par exemple, vous pouvez décider de ne pas travailler sur la même branche (master), mais de mettre en place des branches par fonctionnalité, qui seront fusionnées dans la branche principale au fur et à mesure du développement. De telles stratégies de développement sont déjà bien documentées, par exemple dans Git Flow. Par ailleurs, certains gestionnaires de code source proposent de configurer des branches protégées qui empêchent des modifications non autorisées sur les fichiers contenus dans ces branches.

Soyez vigilant sur le contenu de votre code source

  • Mettez en œuvre des outils de métriques de qualité de code qui scanneront votre code dès son commit pour vérifier sa bonne qualité. Vous pouvez également ajouter des scripts de contrôle de ces métriques dans la configuration du gestionnaire de code source : le commit sera alors annulé si le code source n'est pas d'une qualité suffisante.
  • Conservez vos secrets et mots de passe en dehors de votre dépôt de code source :

Enfin, si vous devez inclure de telles données dans votre dépôt, pensez à chiffrer/déchiffrer automatiquement les fichiers en utilisant un greffon de votre gestionnaire de code source (par exemple git-crypt).

  • dans des fichiers à part, qui n'ont pas fait l'objet d'un commit. Pensez à utiliser les fichiers spéciaux de votre gestionnaire de code source (tels que .gitignore pour Git) afin de ne pas commiter les fichiers sensibles par erreur.
  • dans des variables d'environnement, en prenant soin de vérifier que les variables d'environnement ne sont pas accidentellement écrites dans des logs ou affichées lors d'une erreur de l'application.
  • en utilisant des logiciels spécifiques de gestion de secrets ou de gestion de configuration.
  • Après un commit qui contient des données personnelles ou d’autres données critiques, n'oubliez pas de purger complètement le dépôt de code source : même après modification, les données peuvent rester disponibles dans l'historique de votre dépôt.
  • Faites preuve de prudence avant de publier en ligne votre code source. Passez en revue l'intégralité de son contenu afin de vous assurer qu'aucune donnée personnelle, mot de passe ou autre secret n'est présent, y compris dans tout l'historique des modifications.

Exemples d'outils

  • À l'inverse d'outils tels que Subversion, qui ont besoin d'un serveur central pour fonctionner, les principaux gestionnaires de code source (Git, Mercurial par exemple) sont décentralisés.
  • Pour la plupart de ces outils, une interface web et des outils annexes (gestion des bugs, wiki pour votre documentation, etc.) sont proposés. Ces solutions peuvent soit être accessibles par internet (GitHub, Bitbucket, etc.), soit être installées en interne sur vos serveurs (GitLab).