Como desenvolver no Windows e testar e executar no Linux?

12

Sou um dos dois desenvolvedores de algum software interno (escrito em python) na minha empresa. Software é um aplicativo de servidor projetado para ser executado em uma caixa Linux dedicada. Atualmente, temos uma caixa que contém nosso repositório SVN e essa caixa também é usada para teste. O problema é que estou desenvolvendo-o na minha estação de trabalho usando o Eclipse no Windows e esse aplicativo não pode ser executado no Windows.

Como organizar adequadamente esse ambiente para que você não perca um tempo valioso na transferência do projeto e do código para poder testá-lo?

Atualmente, estou fazendo o check-out do svn, altere algum código e carregue-o no servidor de desenvolvimento para teste (não via svn). Teste no servidor, altere algo, teste novamente etc. Depois de tudo isso, a confirmação. Esse carregamento e teste constantes estão me deixando louco. Tentei manter o projeto no servidor (check-out no diretório home), mas isso causa muitos problemas com o Eclipse.

Obviamente, eu não tenho muita experiência nisso, então estou perguntando quais são as melhores práticas para esse tipo de problema?

c0ldcrow
fonte

Respostas:

14

Monte a pasta na caixa do Linux. Dessa forma, você pode interagir diretamente com o código. Funciona um encanto!

l0b0
fonte
Esta é a resposta certa. Especialmente se você pode executar o Cygwin na sua caixa de janelas; você pode usar o Cygwin para exibir o Linux X-Windows (Gnome, KDE, o que as crianças legais estão usando atualmente) de volta à sua caixa do Windows. Você pode programar no Eclipse diretamente na caixa Linux e testá-lo imediatamente.
Kristofer Hoch
3
Apenas tome cuidado com as diferenças nos sistemas de arquivos. O Windows não suporta nomes de arquivos com distinção entre maiúsculas e minúsculas (onde "filename" e "FILENAME" são dois arquivos diferentes), alguns caracteres como um nome de arquivo (por exemplo, "/") ou links diretos.
bitsoflogic
Concordo, esta é a opção mais útil e mais fácil de implementar. Configurar uma VM da maneira que eu quero, exigiria muito tempo.
C0ldcrow
@ c0ldcrow: Além dos problemas do sistema de arquivos, lembre-se de que, dependendo do que você está fazendo, o acesso a arquivos em uma rede para fazer o trabalho de desenvolvimento pode ser proibitivamente lento. Em particular, notei que alguns sistemas de controle de versão são muito lentos quando usados ​​em uma unidade de rede, embora esse caso em particular não deva ser um problema para você (faça todo o controle de origem localmente).
Matthew Scharley 2/08
10

A melhor solução, na minha opinião, seria usar um ambiente virtualizado para teste, se o seu PC local tiver recursos para executar um.

Para algumas recomendações sobre produtos específicos, você pode ver minha resposta a uma pergunta no StackOverflow , mas, em geral, o que isso significa é que você terá um segundo PC Linux em execução no seu atual. Eu uso isso para desenvolvimento de PHP no Windows o tempo todo e funciona muito bem para mim. Você pode compartilhar sua base de código com o SSH / ExpanDrive ou, se estiver usando o VirtualBox, verifique as pastas compartilhadas .

Matthew Scharley
fonte
6

Sugestão 1: trabalhe diretamente no Linux, se você tiver tempo para aprender. Aprender como outro sistema operacional funciona é realmente ótimo para sua experiência pessoal e adicionar ao seu currículo que você sabe como usar o Linux não faz mal. Além disso, o Eclipse existe no Linux, para que você não perca nada em relação ao Windows.

Sugestão 2: instale o Linux em uma máquina virtual localmente. Isso permitirá que você teste o aplicativo sem precisar publicá-lo em um servidor distante todas as vezes.

Nota: como você pode escrever um aplicativo direcionado ao Linux se você trabalha com Windows? É um pesadelo!

Arseni Mourzenko
fonte
Mesmo se você tiver testadores, precisará fazer alguns testes limitados em seu próprio trabalho, mesmo que seja apenas para garantir que ele realmente compile / execute. Se você está desenvolvendo em uma caixa do Windows, mas está desenvolvendo um aplicativo Linux, isso se torna um pouco mais difícil. Na nota de como você pode fazer isso, é fácil o suficiente para fazer a configuração correta. Eu uso as VMs extensivamente em meu próprio trabalho (PHP / MySQL direcionado a um servidor final Linux) e funciona realmente muito bem, especialmente se você tiver mais de 2 monitores para trabalhar.
Matthew Scharley 2/08
Eu já sou muito bom com o Linux (configurei o servidor de teste e SVN). Eu também faço a codificação do Windows (precisa do Visual studio) e geralmente gosto mais do Windows :) O desenvolvimento de software não é o negócio principal da minha empresa, a segurança do computador é, este é apenas um aplicativo interno que precisamos. Eu acho que eu posso aceitar instalar o Linux em um VM
c0ldcrow
@ Matthew Scharley: Eu concordo. Removida minha segunda nota.
Arseni Mourzenko
@ c0ldcrow: portanto, não deve ser um problema para você ter um ambiente virtual apenas para desenvolver este aplicativo (ou apenas para testá-lo enquanto escreve código no Windows).
Arseni Mourzenko
2

Se você estiver usando o eclipse, existe um plug-in perfeito para você: Filesync Eu o uso o tempo todo e tenho certeza que você vai adorar.

Aqui está o que eu costumo fazer enquanto trabalho nas mesmas condições que você.

Fiz o checkout do projeto no SVN usando o Eclipse na minha máquina. Em seguida, sincronizo meu projeto local com o servidor de teste remoto | excluindo arquivos como .project e outros. Eu recomendo que você também coloque sua chave SSH no servidor remoto para acelerar a conexão.

E voilà! Agora você pode trabalhar localmente e o eclipse sincronizará automaticamente todas as alterações que você fizer no servidor remoto. Quando tudo estiver bem testado e pronto para ser entregue, você também poderá confirmar o uso do eclipse! Não há necessidade de massa!

Espero que ajude!

Alfwed
fonte
0

Consegui escrever código c # / mono no Visual Studio e depurar remotamente em uma caixa Linux do VS usando um plug-in de depurador remoto GDB. Funcionou incrivelmente bem. Eu imagino que seria mais rápido se sua instalação do Linux estivesse em uma VM local (há um bom dispositivo VMWare Ubuntu disponível na Web), mas eu precisava de um conjunto de placas Tesla GPU que não estavam instaladas no meu laptop.

Procure o WinGDB. Não é gratuito, mas funciona incrivelmente bem.

3Dave
fonte