URL:     https://linuxfr.org/forums/programmation-c/posts/comment-synchroniser-environnement-de-developpement-entre-machines
Title:   Comment synchroniser environnement de développement entre machines ?
Authors: ykrons
Date:    2021-03-02T11:06:53+01:00
License: CC By-SA
Tags:    conteneur
Score:   2


Bonjour,

Dans ma boîte, on développe différents logiciels pour de l'embarqué qui sont compilés sur différentes machines (station de travail, environnement d'intégration continue etc).
Entre les bouts de code en C/C++, python, JS, etc, la gestion des librairies commence à se compliquer et comme tout est fait à la main pour synchroniser les environnement de développement, c'est un peu pénible à court terme et je pense très hasardeux à long terme.

On a également plusieurs projets en parallèle, donc le besoin de basculer assez facilement de l'un à l'autre. Actuellement par chance, les dépendances sont à peut-près compatibles mais ça va pas durer.

Jusqu'à présent, on utilise une Machine Virtuelle mais c'est très gros à échanger et pratiquement jamais mis à jour correctement alors j'essaye de migrer ça vers des environnement virtuels et des containers qui pourront être archivés via git etc.

Pour les parties python, je mets en place des environnements virtuels python qui me semblent être la méthode assez classique.

Plus globalement et pour les parties C/C++, je suis parti sur des containers qui contiennent les libs et les compilos/interpréteurs. Les sources sont accessibles par l'intermédiaire d'un volume et j'ai fait quelques bidouilles pour avoir les mêmes UID/GID que l'utilisateur de l'hôte.
Ça marche assez bien pour avoir un environnement pour builder une version "officielle" (un clique et ça sort un package tout chaud) mais je suis moins convaincu pour la phase développement avec ses erreurs de compile, les phases de debug, etc. On utilise Eclipse principalement et quelques outils graphiques.

Je voyais deux options mais aucune ne me satisfait vraiment:
1. Installer Eclipse (et autres outils graphique) côté hôte pour travailler sur le code et lancer uniquement la compilation dans le container. Je trouve ça assez bien car très peut de différences par rapport au monde sans container. Là où ça me semble tordu, c'est que je vais avoir des erreurs de compile qui vont me donner des chemins correspondants au monde du container et pas de l'hôte par exemple. 
2. Installer Eclipse côté container. Là, les messages d'erreur pointeront bien sur les fichiers, mais par contre il faudra lancer tous les outils en "export display" ou via une console dans le container, ce qui me semble beaucoup moins transparent à l'utilisation.

Alors voilà (enfin) ma question:
Quelles sont les bonnes pratiques et quelles autres options existent pour "dupliquer" des environnements de développement entre plusieurs machines?

Merci d'avance


