Comment développer sous Windows et tester et exécuter sous Linux?

12

Je suis l'un des deux développeurs de certains logiciels internes (écrits en python) dans mon entreprise. Le logiciel est une application serveur conçue pour fonctionner sur une boîte Linux dédiée. Actuellement, nous avons une boîte contenant notre référentiel SVN et cette boîte est également utilisée pour les tests. Le problème est que je le développe sur mon poste de travail en utilisant Eclipse sur Windows et que cette application ne peut pas fonctionner sur Windows.

Comment organiser correctement un tel environnement afin de ne pas perdre de temps précieux sur le transfert du projet et du code pour pouvoir le tester?

Actuellement, je fais la vérification de svn, je change du code et je le télécharge sur le serveur de développement pour le tester (pas via svn). Testez-le sur le serveur, changez quelque chose, testez-le à nouveau, etc. Après tout cela vient le commit. Ce téléchargement et ces tests constants me rendent fou. J'ai essayé de garder le projet sur le serveur (paiement dans le répertoire home) mais cela cause beaucoup de problèmes avec Eclipse.

Évidemment, je n'ai pas beaucoup d'expérience dans ce domaine, donc je demande quelles sont les meilleures pratiques concernant ce type de problèmes?

c0ldcrow
la source

Réponses:

14

Montez le dossier sur la boîte Linux. De cette façon, vous pouvez interagir directement avec le code. Fonctionne un charme!

l0b0
la source
C'est la bonne réponse. Surtout si vous pouvez exécuter Cygwin sur votre Windows Box; vous pouvez utiliser Cygwin pour afficher les Linux X-Windows (Gnome, KDE, tout ce que les enfants cool utilisent de nos jours) dans votre boîte Windows. Vous pouvez programmer dans Eclipse directement sur la box Linux et le tester immédiatement.
Kristofer Hoch
3
Attention aux différences de systèmes de fichiers. Windows ne prend pas en charge les noms de fichiers sensibles à la casse (où "filename" et "FILENAME" sont deux fichiers différents), certains caractères en tant que nom de fichier (par exemple "/") ou les liens logiciels.
bitsoflogic
D'accord, c'est l'option la plus utile et la plus simple à mettre en œuvre. Configurer une machine virtuelle comme je le souhaite demanderait trop de temps.
c0ldcrow
@ c0ldcrow: Outre les problèmes de système de fichiers, sachez que selon ce que vous faites, l'accès aux fichiers sur un réseau pour effectuer un travail de développement peut être extrêmement lent. En particulier, j'ai remarqué que certains systèmes de contrôle de version sont très lents lorsqu'ils sont utilisés sur un lecteur réseau, bien que ce cas particulier ne devrait pas vous poser de problème (faites tout votre contrôle de source localement).
Matthew Scharley
10

La meilleure solution à mon avis serait d'utiliser un environnement virtualisé pour les tests, si votre PC local a les ressources pour en exécuter un.

Pour quelques recommandations sur des produits spécifiques, vous pouvez voir ma réponse à une question sur StackOverflow , mais en général, cela signifie que vous aurez un deuxième PC Linux en cours d'exécution à l'intérieur de votre actuel. J'utilise cela pour le développement PHP sur Windows tout le temps et cela fonctionne très bien pour moi. Vous pouvez partager votre base de code avec SSH / ExpanDrive ou si vous utilisez VirtualBox, puis consultez les dossiers partagés .

Matthew Scharley
la source
6

Suggestion 1: travaillez directement sous Linux, si vous avez le temps de l'apprendre. Apprendre comment fonctionne un autre système d'exploitation est vraiment formidable pour votre expérience personnelle, et ajouter à votre CV que vous savez comment utiliser Linux ne fait pas de mal. Eclipse existe également sous Linux, vous ne perdez donc rien par rapport à Windows.

Suggestion 2: installez Linux sur une machine virtuelle localement. Il vous permettra de tester l'application sans avoir à la publier à chaque fois sur un serveur distant.

Remarque: comment pouvez-vous éventuellement écrire une application qui cible Linux si vous travaillez avec Windows? C'est un cauchemar!

Arseni Mourzenko
la source
Même si vous avez des testeurs, vous devez faire des tests limités sur votre propre travail, même si c'est juste pour vous assurer qu'il se compile / s'exécute réellement. Si vous développez sur une boîte Windows mais que vous développez une application Linux, cela devient un peu plus difficile. Sur la façon dont vous pouvez le faire, c'est assez facile à faire avec la bonne configuration. J'utilise beaucoup de VM dans mon propre travail (PHP / MySQL ciblant un serveur final Linux) et cela fonctionne vraiment très bien, surtout si vous avez 2+ moniteurs avec lesquels travailler.
Matthew Scharley
Je suis déjà très bon avec Linux (j'ai mis en place le serveur de test et SVN). Je fais aussi du codage Windows (j'ai besoin de Visual studio) et généralement j'aime plus Windows :) Le développement de logiciels n'est pas le cœur de métier de mon entreprise, la sécurité informatique, c'est juste une application interne dont nous avons besoin. Je pense que je peux accepter d'installer Linux dans une machine virtuelle
c0ldcrow
@Matthew Scharley: Je suis d'accord. Suppression de ma deuxième note.
Arseni Mourzenko
@ c0ldcrow: cela ne doit donc pas vous poser de problème d'avoir un environnement virtuel juste pour développer cette application (ou seulement pour la tester, tout en écrivant du code sous Windows).
Arseni Mourzenko
2

Si vous utilisez eclipse, il y a un plugin parfait pour vous: Filesync Je l'utilise tout le temps et je suis sûr que vous allez l'adorer.

Voici ce que je fais d'habitude car je travaille dans les mêmes conditions que vous.

Je récupère le projet de SVN en utilisant Eclipse sur ma machine. Ensuite, je synchronise mon projet local sur le serveur dev | test distant en excluant les fichiers comme .project et autres. Je vous recommande également de mettre votre clé SSH sur le serveur distant pour accélérer la connexion.

Et voilà! Vous pouvez maintenant travailler localement et eclipse synchronisera automatiquement toutes les modifications que vous effectuez sur le serveur distant. Lorsque tout est bien testé et prêt à être livré, vous pouvez aussi vous engager avec eclipse! Pas besoin de mastic!

J'espère que cela aide!

Alfwed
la source
0

J'ai réussi à écrire du code c # / mono dans Visual Studio et à déboguer à distance sur une boîte Linux à partir de VS en utilisant un plugin de débogueur à distance GDB. Fonctionne incroyablement bien. J'imagine que ce serait plus rapide si votre installation Linux est dans une machine virtuelle locale (il y a une belle appliance VMWare Ubuntu disponible sur le web), mais j'avais besoin d'un ensemble de cartes GPU Tesla qui n'étaient pas installées dans mon ordinateur portable.

Recherchez WinGDB. Ce n'est pas gratuit, mais fonctionne incroyablement bien.

3Dave
la source