Come sviluppare su Windows e testare ed eseguire su Linux?


12

Sono uno dei due sviluppatori per alcuni software interni (scritti in Python) nella mia azienda. Il software è un'applicazione server progettata per essere eseguita su un box Linux dedicato. Attualmente, abbiamo una scatola che contiene il nostro repository SVN e questa scatola viene utilizzata anche per i test. Il problema è che lo sto sviluppando sulla mia workstation utilizzando Eclipse su Windows e questa app non può essere eseguita su Windows.

Come organizzare correttamente tale ambiente in modo da non perdere tempo prezioso nel trasferimento del progetto e del codice in modo da poterlo testare?

Attualmente sto facendo svn checkout, cambio un po 'di codice e poi lo carico sul server di sviluppo per il test (non tramite svn). Provalo sul server, cambia qualcosa, prova di nuovo ecc. Dopo tutto ciò arriva il commit. Questo costante caricamento e test mi sta facendo impazzire. Ho provato a mantenere il progetto sul server (checkout alla home directory) ma questo causa molti problemi con Eclipse.

Ovviamente non ho molta esperienza in questo, quindi mi chiedo quali sono le migliori pratiche in merito a questo tipo di problemi?

Risposte:


14

Montare la cartella sulla scatola di Linux. In questo modo è possibile interagire direttamente con il codice. Funziona un incanto!


Questa è la risposta esatta. Soprattutto se puoi eseguire Cygwin sul tuo box di Windows; puoi usare Cygwin per visualizzare Linux X-Windows (Gnome, KDE, Qualunque cosa i bambini fighi stiano usando in questi giorni) nella tua finestra di Windows. Puoi programmare in Eclipse direttamente sul box Linux e testarlo immediatamente.
Kristofer Hoch,

3
Fai attenzione alle differenze nei file system. Windows non supporta nomi di file con distinzione tra maiuscole e minuscole (dove "nome file" e "NOMEFILE" sono due file diversi), alcuni caratteri come nome file (ad esempio "/") o collegamenti software.
bitsoflogic,

D'accordo, questa è l'opzione più utile e più semplice da implementare. Configurare una VM nel modo che preferisco richiederebbe troppo tempo.
c0ldcrow,

@ c0ldcrow: a parte i problemi del file system, tieni presente che, a seconda di ciò che stai facendo, l'accesso ai file attraverso una rete per svolgere il lavoro di sviluppo può essere proibitivamente lento. In particolare, ho notato che alcuni sistemi di controllo della versione sono molto lenti quando vengono utilizzati su un'unità di rete, anche se questo caso particolare non dovrebbe essere un problema per te (fai tutto il controllo del codice sorgente localmente).
Matthew Scharley,

10

La migliore soluzione secondo me sarebbe quella di utilizzare un ambiente virtualizzato per i test, se il tuo PC locale ha le risorse per eseguirne uno.

Per alcuni consigli su prodotti specifici, puoi vedere la mia risposta a una domanda su StackOverflow , ma in generale, ciò significa che avrai un secondo PC Linux in esecuzione all'interno di quello attuale. Lo uso sempre per lo sviluppo di PHP su Windows e funziona davvero bene per me. Puoi condividere la tua base di codice con SSH / ExpanDrive o se stai usando VirtualBox, controlla le cartelle condivise .


6

Suggerimento 1: lavora direttamente su Linux, se hai tempo per impararlo. Imparare come funziona un altro sistema operativo è davvero fantastico per la tua esperienza personale e aggiungere al tuo CV che sai come usare Linux non fa male. Inoltre, Eclipse esiste in Linux, quindi non perdi nulla contro Windows.

Suggerimento 2: installare Linux su una macchina virtuale localmente. Ti permetterà di testare l'applicazione senza doverla pubblicare su un server distante ogni volta.

Nota: come puoi eventualmente scrivere un'applicazione destinata a Linux se lavori con Windows? È un incubo!


Anche se si dispone di tester, è necessario eseguire alcuni test limitati sul proprio lavoro, anche se è solo per assicurarsi che effettivamente compili / funzioni. Se stai sviluppando su un box Windows ma stai sviluppando un'applicazione Linux, questo diventa un po 'più difficile. Sulla nota di come puoi farlo, è abbastanza facile da fare con la giusta configurazione. Uso ampiamente le macchine virtuali nel mio lavoro (PHP / MySQL indirizzato a un server finale Linux) e funziona davvero molto bene, soprattutto se hai 2+ monitor con cui lavorare.
Matthew Scharley,

Sono già molto bravo con Linux (ho impostato il test e il server SVN). Faccio anche la codifica di Windows (ho bisogno di Visual Studio) e in genere mi piace di più di Windows :) Lo sviluppo del software non è il core business della mia azienda, la sicurezza del computer è, questa è solo un'app interna di cui abbiamo bisogno. Penso di poter accettare l'installazione di Linux in una VM
c0ldcrow il

@Matthew Scharley: sono d'accordo. Rimossa la mia seconda nota.
Arseni Mourzenko,

@ c0ldcrow: quindi non deve essere un problema avere un ambiente virtuale solo per sviluppare questa applicazione (o solo per testarla, mentre si scrive codice in Windows).
Arseni Mourzenko,

2

Se stai usando eclipse, c'è un plugin perfetto per te: Filesync Lo uso sempre e sono sicuro che lo adorerai .

Ecco cosa faccio di solito mentre lavoro nelle stesse condizioni di te.

Controllo il progetto da SVN usando Eclipse nella mia macchina. Quindi sincronizzo il mio progetto locale sul server dev | test remoto escludendo file come .project e simili. Ti consiglio di mettere anche la tua chiave SSH sul server remoto per velocizzare la connessione.

E voilà! Ora puoi lavorare localmente ed eclipse sincronizzerà automaticamente tutte le modifiche apportate sul server remoto. Quando tutto è ben collaudato e pronto per essere consegnato, puoi impegnarti anche usando eclipse! Non c'è bisogno di stucco!

Spero che sia d'aiuto!


0

Sono riuscito a scrivere codice c # / mono in Visual Studio e ho eseguito il debug in remoto su un box Linux dall'interno di VS usando un plugin di debugger remoto GDB. Ha funzionato incredibilmente bene. Immagino che sarebbe più veloce se la tua installazione Linux fosse su una VM locale (c'è una bella appliance Ubuntu VMWare disponibile sul web), ma avevo bisogno di un set di schede GPU Tesla che non erano installate sul mio laptop.

Cerca WinGDB. Non è gratuito, ma funziona incredibilmente bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.