Wie kann man unter Windows entwickeln und unter Linux testen und ausführen?

12

Ich bin einer von zwei Entwicklern für interne Software (in Python geschrieben) in meiner Firma. Software ist eine Serveranwendung, die auf einer dedizierten Linux-Box ausgeführt werden kann. Derzeit haben wir eine Box, die unser SVN-Repository enthält, und diese Box wird auch zum Testen verwendet. Das Problem ist, dass ich es auf meiner Workstation mit Eclipse unter Windows entwickle und diese App unter Windows nicht ausgeführt werden kann.

Wie kann eine solche Umgebung richtig organisiert werden, damit Sie beim Übertragen des Projekts und beim Testen des Codes keine wertvolle Zeit verlieren?

Momentan mache ich eine svn-Prüfung, ändere Code und lade ihn zum Testen auf den Entwicklungsserver hoch (nicht über svn). Teste es auf dem Server, ändere etwas, teste es erneut usw. Danach kommt das Commit. Dieses ständige Hochladen und Testen macht mich verrückt. Ich habe versucht, das Projekt auf dem Server zu belassen (checkout to home dir), aber dies verursacht eine ganze Reihe von Problemen mit Eclipse.

Offensichtlich habe ich nicht viel Erfahrung damit, also frage ich mich, was die besten Praktiken in Bezug auf diese Art von Problemen sind.

c0ldcrow
quelle

Antworten:

14

Hängen Sie den Ordner in die Linux-Box ein. Auf diese Weise können Sie direkt mit dem Code interagieren. Funktioniert ein Charme!

l0b0
quelle
Das ist die richtige Antwort. Vor allem, wenn Sie Cygwin auf Ihrer Windows-Box ausführen können; Sie können Cygwin verwenden, um Linux X-Windows (Gnome, KDE, was auch immer die coolen Kids heutzutage verwenden) auf Ihrer Windows-Box anzuzeigen. Sie können Eclipse direkt auf der Linux-Box programmieren und sofort testen.
Kristofer Hoch
3
Beachten Sie nur die Unterschiede in den Dateisystemen. Windows unterstützt keine Dateinamen (wobei "Dateiname" und "Dateiname" zwei verschiedene Dateien sind), einige Zeichen als Dateiname (dh "/") oder Softlinks.
bitsoflogic
Stimmen Sie zu, dies ist die nützlichste und am einfachsten zu implementierende Option. Die Konfiguration einer VM nach meinen Wünschen würde zu viel Zeit in Anspruch nehmen.
c0ldcrow
@ c0ldcrow: Abgesehen von den Problemen mit dem Dateisystem sollten Sie sich nur darüber im Klaren sein, dass der Zugriff auf Dateien über ein Netzwerk, um Entwicklungsarbeiten auszuführen, sehr langsam sein kann. Insbesondere ist mir aufgefallen, dass einige Versionskontrollsysteme bei Verwendung auf einem Netzwerklaufwerk sehr langsam sind, obwohl dieser spezielle Fall für Sie kein Problem darstellen sollte (erledigen Sie alle Versionskontrollaufgaben lokal).
Matthew Scharley
10

Die beste Lösung wäre meiner Meinung nach, eine virtualisierte Umgebung zum Testen zu verwenden, wenn Ihr lokaler PC über die Ressourcen verfügt, um eine auszuführen.

Für einige Empfehlungen zu bestimmten Produkten wird meine Antwort auf eine Frage zu StackOverflow angezeigt . Im Allgemeinen bedeutet dies jedoch, dass in Ihrem aktuellen PC ein zweiter Linux-PC ausgeführt wird. Ich benutze dies die ganze Zeit für die PHP-Entwicklung unter Windows und es funktioniert wirklich gut für mich. Sie können Ihre Codebasis entweder für SSH / ExpanDrive freigeben oder, wenn Sie VirtualBox verwenden, freigegebene Ordner auschecken .

Matthew Scharley
quelle
6

Vorschlag 1: Arbeiten Sie direkt unter Linux, wenn Sie Zeit haben, es zu lernen. Zu lernen, wie ein anderes Betriebssystem funktioniert, ist für Ihre persönliche Erfahrung wirklich großartig, und Ihrem Lebenslauf hinzuzufügen, dass Sie wissen, wie man Linux verwendet, schadet nicht. Eclipse gibt es auch unter Linux, sodass Sie im Vergleich zu Windows nichts verlieren.

Vorschlag 2: Linux lokal auf einer virtuellen Maschine installieren. Damit können Sie die Anwendung testen, ohne sie jedes Mal auf einem entfernten Server veröffentlichen zu müssen.

Hinweis: Wie können Sie möglicherweise eine Anwendung schreiben, die Linux als Ziel hat, wenn Sie mit Windows arbeiten? Es ist ein Albtraum!

Arseni Mourzenko
quelle
Selbst wenn Sie Tester haben, müssen Sie einige begrenzte Tests für Ihre eigene Arbeit durchführen, auch wenn dies nur dazu dient, sicherzustellen, dass diese überhaupt kompiliert / ausgeführt wird. Wenn Sie auf einer Windows-Box entwickeln, aber eine Linux-Anwendung entwickeln, wird dies etwas schwieriger. In Anbetracht dessen, wie Sie es tun können, ist es einfach genug, mit dem richtigen Setup umzugehen. Ich benutze VMs in meiner eigenen Arbeit ausgiebig (PHP / MySQL zielt auf einen Linux-Endserver ab) und es funktioniert wirklich sehr gut, besonders wenn Sie 2+ Monitore haben, mit denen Sie arbeiten können.
Matthew Scharley
Ich bin schon sehr gut mit Linux (ich habe den Test- und SVN-Server eingerichtet). Ich mache auch Windows-Codierung (brauche Visual Studio) und im Allgemeinen mag ich Windows mehr :) Software-Entwicklung ist nicht das Kerngeschäft meines Unternehmens, Computersicherheit ist, dies ist nur eine interne App, die wir brauchen. Ich glaube, ich kann die Installation von Linux auf einer VM akzeptieren
c0ldcrow
@ Matthew Scharley: Ich stimme zu. Entfernte meine zweite Note.
Arseni Mourzenko
@ c0ldcrow: Es muss also kein Problem für Sie sein, eine virtuelle Umgebung zu haben, um diese Anwendung zu entwickeln (oder sie nur zu testen, während Sie Code in Windows schreiben).
Arseni Mourzenko
2

Wenn Sie Eclipse verwenden, gibt es ein perfektes Plugin für Sie: Filesync Ich benutze es die ganze Zeit und ich bin sicher, dass Sie es lieben werden.

Das mache ich normalerweise, wenn ich unter den gleichen Bedingungen arbeite wie Sie.

Ich checke das Projekt von SVN mit Eclipse auf meinem Computer aus. Dann synchronisiere ich mein lokales Projekt mit dem entfernten dev | test-Server, ohne Dateien wie .project und so weiter. Ich empfehle, dass Sie auch Ihren SSH-Schlüssel auf den Remote-Server legen, um die Verbindung zu beschleunigen.

Und voilà! Jetzt können Sie lokal arbeiten und Eclipse synchronisiert automatisch alle Änderungen, die Sie auf dem Remote-Server vornehmen. Wenn alles gut getestet und zur Auslieferung bereit ist, können Sie auch Eclipse verwenden! Kein Kitt nötig!

Ich hoffe es hilft!

Alfwed
quelle
0

Ich habe es geschafft, C # / Mono-Code in Visual Studio zu schreiben und mit einem GDB-Remote-Debugger-Plugin auf einer Linux-Box von VS aus zu debuggen. Hat erstaunlich gut funktioniert. Ich stelle mir vor, es wäre schneller, wenn Sie Linux auf einer lokalen VM installieren würden (es gibt eine nette VMWare Ubuntu-Appliance im Internet), aber ich benötigte einen Satz Tesla-GPU-Karten, die nicht in meinem Laptop installiert waren.

Suchen Sie nach WinGDB. Es ist nicht kostenlos, funktioniert aber unglaublich gut.

3Dave
quelle