Как разрабатывать в Windows, тестировать и запускать в Linux?

12

Я являюсь одним из двух разработчиков некоторых внутренних программ (написанных на python) в моей компании. Программное обеспечение - это серверное приложение, предназначенное для работы на выделенном компьютере Linux. В настоящее время у нас есть один ящик, содержащий наше хранилище SVN, и этот ящик также используется для тестирования. Проблема в том, что я разрабатываю его на своей рабочей станции, используя Eclipse в Windows, и это приложение не может работать в Windows.

Как правильно организовать такую ​​среду, чтобы вы не могли потерять драгоценное время на перенос проекта и кода, чтобы можно было его протестировать?

В настоящее время я делаю svn checkout, изменяю некоторый код и затем загружаю его на сервер разработки для тестирования (не через svn). Протестируйте его на сервере, измените что-нибудь, протестируйте снова и т. Д. После всего этого происходит фиксация. Эта постоянная загрузка и тестирование сводит меня с ума. Я пытался сохранить проект на сервере (извлечение на домашний каталог), но это вызывает много проблем с Eclipse.

Очевидно, у меня нет большого опыта в этом, поэтому я спрашиваю, каковы лучшие практики в отношении таких проблем?

c0ldcrow
источник

Ответы:

14

Смонтируйте папку на коробке Linux. Таким образом, вы можете напрямую взаимодействовать с кодом. Работает шарм!

l0b0
источник
Это правильный ответ. Особенно, если вы можете запустить Cygwin на вашем Windows Box; Вы можете использовать Cygwin для отображения Linux X-Windows (Gnome, KDE, что бы ни крутые дети использовали в наши дни) обратно в окно Windows. Вы можете программировать в Eclipse прямо на Linux и сразу же протестировать его.
Кристофер Хох
3
Просто остерегайтесь различий в файловых системах. Windows не поддерживает имена файлов с учетом регистра (где «filename» и «FILENAME» - два разных файла), некоторые символы в качестве имени файла (то есть «/») или программные ссылки.
битсофлогический
Согласитесь, это самый полезный и самый простой вариант для реализации. Настройка виртуальной машины так, как я хочу, потребует слишком много времени.
c0ldcrow
@ c0ldcrow: Помимо проблем с файловой системой, имейте в виду, что в зависимости от того, что вы делаете, доступ к файлам по сети для выполнения работы разработчика может быть чрезмерно медленным. В частности, я заметил, что некоторые системы управления версиями работают очень медленно при использовании на сетевом диске, хотя этот конкретный случай не должен быть проблемой для вас (делайте всю вашу систему контроля версий локально).
Мэтью Шарли
10

На мой взгляд, лучшим решением было бы использовать виртуализированную среду для тестирования, если на вашем локальном ПК есть ресурсы для ее запуска.

С некоторыми рекомендациями по конкретным продуктам вы можете ознакомиться с моим ответом на вопрос о StackOverflow , но в целом это означает, что у вас будет второй ПК с Linux, работающий внутри вашего текущего. Я использую это для разработки PHP на Windows все время, и это работает очень хорошо для меня. Вы можете поделиться своей кодовой базой либо с SSH / ExpanDrive, либо, если вы используете VirtualBox, тогда проверьте общие папки .

Мэтью Шарли
источник
6

Предложение 1: работайте в Linux напрямую, если у вас есть время на его изучение. Изучение того, как работает другая операционная система, действительно полезно для вашего личного опыта, и добавление в ваше резюме того, что вы знаете, как использовать Linux, не повредит. Кроме того, Eclipse существует в Linux, поэтому вы ничего не потеряете по сравнению с Windows.

Предложение 2: установить Linux на виртуальной машине локально. Это позволит вам протестировать приложение без необходимости каждый раз публиковать его на удаленном сервере.

Примечание: как вы можете написать приложение для Linux, если вы работаете с Windows? Это кошмар!

Арсений Мурзенко
источник
Даже если у вас есть тестеры, вы должны провести некоторое ограниченное тестирование на своей собственной работе, даже если это просто для того, чтобы убедиться, что он вообще компилируется / запускается. Если вы разрабатываете для Windows, но вы разрабатываете приложение для Linux, то это становится немного сложнее. На заметку о том, как вы можете это сделать, это достаточно легко сделать с правильной настройкой. Я широко использую виртуальные машины в своей собственной работе (PHP / MySQL для конечного сервера Linux), и она действительно работает очень хорошо, особенно если у вас есть 2+ монитора для работы.
Мэтью Шарли
Я уже очень хорошо разбираюсь в Linux (я настроил тест и сервер SVN). Я также занимаюсь написанием кода для Windows (нужна Visual Studio) и, как правило, мне больше нравится Windows :). Разработка программного обеспечения - это не основной бизнес для моей компании, а компьютерная безопасность, это всего лишь какое-то внутреннее приложение, которое нам нужно. Я думаю, что могу принять установку Linux на ВМ
c0ldcrow
@ Мэтью Шарли: Я согласен. Убрал мою вторую заметку.
Арсений Мурзенко
@ c0ldcrow: так что для вас не должно быть проблемой иметь виртуальную среду только для разработки этого приложения (или только для его тестирования при написании кода в Windows).
Арсений Мурзенко
2

Если вы используете Eclipse, есть идеальный плагин для вас: Filesync Я использую его все время, и я уверен, что он вам понравится.

Вот что я обычно делаю, поскольку работаю в тех же условиях, что и вы.

Я извлекаю проект из SVN, используя Eclipse на моей машине. Затем я синхронизирую свой локальный проект с удаленным тестовым сервером, исключая такие файлы, как .project и подобные. Я также рекомендую поместить ваш SSH-ключ на удаленный сервер, чтобы ускорить соединение.

И вуаля! Теперь вы можете работать локально, и затмение будет автоматически синхронизировать любые изменения, которые вы делаете на удаленном сервере. Когда все будет хорошо проверено и готово к поставке, вы также можете совершить коммит с помощью eclipse! Нет необходимости в шпатлевке!

Надеюсь, это поможет!

Alfwed
источник
0

Мне удалось написать код на c # / mono в Visual Studio и выполнить удаленную отладку на Linux-модуле изнутри VS с помощью плагина удаленного отладчика GDB. Работало на удивление хорошо. Я полагаю, что было бы быстрее, если бы ваша установка Linux осуществлялась на локальной виртуальной машине (в Интернете есть отличное устройство VMWare Ubuntu), но мне нужен был набор карт Tesla GPU, которые не были установлены на моем ноутбуке.

Ищите WinGDB. Это не бесплатно, но работает невероятно хорошо.

3Dave
источник