Как автоматизировать настройку среды разработки?

Каждый раз, когда к команде присоединяется новый разработчик или меняется компьютер, который использует разработчик, разработчику необходимо проделать большую работу, чтобы настроить локальную среду разработки, чтобы текущий проект работал. Как команда SCRUM, мы пытаемся автоматизировать все, включая развертывание и тестирование, поэтому я спрашиваю: есть ли инструмент или практика для автоматизации настройки локальной среды разработки?

Например, для настройки моей среды сначала мне пришлось установить eclipse, затем SVN, Apache, Tomcat, MySQL, PHP. После этого я заполнил БД, и мне пришлось внести небольшие изменения в различные файлы конфигурации и т. д. Есть ли способ сократить эту работу до одного щелчка?


person nimcap    schedule 08.05.2009    source источник


Ответы (13)


Есть несколько вариантов, иногда полезно их сочетание:

  • автоматическая установка
  • образ диска
  • виртуализация
  • контроль исходного кода

Подробная информация о различных вариантах:

  1. Автоматическая установка Инструменты для автоматизации установки и настройки различных служб, инструментов и файлов конфигурации рабочей станции:

    • Puppet has a learning curve but is powerful. You define classes of machines (development box, web server, etc.) and it then does what is necessary to install, configure, and keep the box in the proper state. You asked for one-click, but Puppet by default is zero-click, as it checks your machine periodically to make sure it is still configured as desired. It will detect when a file or mode has been changed, and fix the problem. I currently use this to maintain a handful of RedHat Linux boxes, though it's capable of handling thousands. (Does not support Windows as of 2009-05-08).
    • Cfengine — еще один. Я видел, как это успешно использовалось в магазине с 70 инженерами, использующими RedHat Linux. Его ограничения были одной из причин создания Puppet.
    • SmartFrog — еще один инструмент для настройки хостов. Он поддерживает Windows.
    • Скрипты оболочки. RightScale содержит примеры настройки Amazon EC2. изображение с помощью сценариев оболочки.
    • Установить пакеты. В системе Unix это можно сделать полностью с помощью пакетов, а в Windows можно использовать msi. Например, RubyWorks предоставляет вам полный стек Ruby on Rails, и все это путем установки одного пакета, который, в свою очередь, устанавливает другие пакеты через зависимости.
  2. Образы дисков Конечно, существуют также инструменты создания образов дисков для хранения образ сконфигурированного хоста, чтобы его можно было восстановить на другом хосте. Как и в случае с виртуализацией, это особенно удобно для тестовых блоков, поскольку их легко восстановить с чистого листа. Постоянное обновление вещей по-прежнему является проблемой — стоит ли создавать новые образы только для того, чтобы распространять изменения в файле конфигурации?

  3. Виртуализация — еще один вариант, например создание копий Xen, VirtualPC или образ VMWare для создания новых хостов. Это особенно полезно с тестовыми блоками, поскольку независимо от того, какой беспорядок создает тест, вы можете легко восстановить его до чистого известного состояния. Как и в случае с инструментами создания образов дисков, для поддержания хостов в актуальном состоянии требуется больше ручных действий и бдительности, чем при использовании автоматизированного инструмента установки/настройки.

  4. Контроль исходного кода После того, как вы установили/настроили необходимые инструменты, выполнение сборок должно заключаться в проверке того, что необходимо, в репозитории исходного кода и его сборке.

В настоящее время я использую комбинацию вышеперечисленного для автоматизации процесса следующим образом:

  • Начните с базовой установки ОС на гостевой системе VMWare.
  • Запустите сценарий оболочки, чтобы установить Puppet и получить его конфигурации из системы управления исходным кодом.
  • Puppet для установки инструментов/компонентов/конфигураций
  • Извлекайте файлы из системы управления исходным кодом для создания и развертывания нашего веб-приложения.
person Pete TerMaat    schedule 08.05.2009
comment
В нашем офисе есть windows, linux и mac os. поэтому я выберу вариант виртуализации. - person nimcap; 12.05.2009
comment
Мы работаем с виртуализацией, и это хорошее решение. Когда я начинал, у меня ушло 3-4 дня на настройку, теперь новые разработчики настраиваются за время, необходимое для копирования образа VPC. - person Burt; 28.05.2009
comment
Вы написали agile.dzone.com/articles/4-methods-automate-development? потому что это звучит очень похоже? - person Aaron D; 28.08.2013
comment
Нет, я не писал эту статью, хотя, судя по сходству, я ее вдохновил. :-) - person Pete TerMaat; 18.09.2013
comment
philchuang.com/ - person Saikat; 25.03.2018
comment
Есть ли альтернатива Puppet для разработчиков Windows? - person Jonathan; 05.07.2018

Я наткнулся на этот вопрос и был очень удивлен, что никто еще не упомянул Vagrant.

Бродяга

Как упомянули Пит ТерМаат и другие, виртуализация — это отличный способ управления средами разработки и их автоматизации. Vagrant избавляет от необходимости настраивать эти виртуальные ящики.

В течение нескольких минут вы можете получить полностью новую копию вашего любимого дистрибутива Linux, работающую и подготовленную точно так же, как ваш рабочий сервер.

Больше не нужно бороться с OSX или Windows, чтобы установить PHP, MySQL и т. д. Все программное обеспечение живет и работает внутри виртуальной машины. Вы даже можете использовать SSH с помощью vagrant ssh. Если вы допустили ошибку или что-то сломали, просто vagrant destroy это и vagrant up, чтобы начать заново.

Vagrant автоматически создает синхронизированную папку в вашей локальной файловой системе. не нужно разрабатывать в виртуальной машине (т.е. с использованием Vim). Используйте любой редактор по вашему выбору.

Теперь я создаю новый «Бродячий ящик» почти для каждого проекта, который я делаю. Все мои настройки сохраняются в репозитории проекта, поэтому легко привлечь другого члена команды. Им просто нужно вытащить репозиторий и запустить vagrant up, и они буквально готовы к работе.

Это также значительно упрощает работу с проектами, которые имеют различные требования к программному обеспечению. Возможно, у вас есть проекты, основанные на PHP 5.3, но некоторые более новые проекты работают на PHP 5.4. Просто установите нужную версию для этого проекта.

Посмотрите!

person Jonathan    schedule 21.05.2013
comment
Отладка может быть проблемой в виртуализированных средах - person Jonathan; 05.07.2018

Одним из важных моментов является настройка ваших проектов в системе управления версиями, чтобы вы могли сразу же создавать, развертывать и запускать их после проверки.

Это означает, что вы также должны зарегистрировать вспомогательную инфраструктуру, такую ​​как файлы Makefile, файлы сборки ant и т. д., и настройки для инструментов, таких как файлы проекта IDE.

Это должно решить проблему с настройкой для отдельных проектов.

Для базовой настройки машины вы можете использовать стандартный образ. Другой вариант — использовать инструменты вашей платформы для автоматизации установки. В Linux вы можете создать метапакет, который зависит от всех необходимых вам пакетов. В Windows подобное должно быть возможно с использованием MSI или чего-то подобного.

Изменить:

В идеале вместо проверки вспомогательной инфраструктуры вы проверяете информацию, которая позволяет сборке генерировать вспомогательную инфраструктуру. Это подход, принятый, например. система сборки GNU (автоинструменты и т. д.) или Maven. Это еще более элегантно, потому что вы можете (теоретически) создавать инфраструктуру для любой (поддерживаемой) среды сборки, поэтому вы не обязаны, например. одна конкретная IDE, а настройки во вспомогательной инфраструктуре (пути и т. д.) не должны дублировать основные настройки проекта.

Однако это также более сложный подход, поэтому, если вы не можете заставить его работать, я считаю, что прямая проверка таких вещей, как файлы IDE, приемлема.

person sleske    schedule 08.05.2009

Мне нравится использовать Virtual PC или VMware для виртуализации среды разработки. Это обеспечивает стандартную «среду разработки», которую разработчики могут использовать совместно. Вам не нужно беспокоиться о программном обеспечении, которое пользователь может добавить в свою систему и которое может конфликтовать с вашей средой разработки. Это также дает мне возможность работать над двумя проектами, когда среды разработки не могут находиться в одной системе (используя две разные версии базовой технологии).

person jeremyasnyder    schedule 08.05.2009
comment
Сильно ли влияет работа в среде VirtualPc/VMWare на производительность? Вы используете Visual Studio 2008? - person Joel Gauvreau; 08.05.2009
comment
Я знаю по крайней мере один большой магазин разработчиков программного обеспечения, который делает ВСЕ свои разработки исключительно на виртуальных машинах (VMWare). Теперь все намного лучше, когда процессоры имеют поддержку аппаратной виртуализации... - person tomfanning; 08.05.2009
comment
Вы должны быть осторожны с конфликтами имен компьютеров. Windows не слишком радуется, когда в одной сети появляются две машины с одинаковым именем. Я также предпочитаю, чтобы моя среда разработки не находилась на виртуальной машине. Накладные расходы действительно могут снизить мою производительность. - person Kieveli; 08.05.2009
comment
Мы используем полностью виртуализированную среду разработки. Мы используем VMServer или VirtualBox для размещения виртуальных машин Vista. Образ виртуальной машины содержит весь наш стек разработки, но не привязан к корпоративному домену. Когда пользователю нужна новая машина, он копирует ее локально, запускает NewSID, а затем присоединяется к домену с уникальным именем машины. На современном железе заметного снижения производительности не наблюдается. Мы используем VS2008 с ~20 проектами C++/C# в решении, и все работает нормально. - person Colin Desmond; 08.05.2009
comment
Одно большое преимущество, которое я вижу в виртуализации, — это возможность сохранять текущее состояние как есть, так что когда вы вернетесь к нему позже, вы вернетесь точно туда, где были. Не совсем связано с настройкой новой машины разработчика, но является приятным побочным эффектом использования виртуальной машины. - person Joel Gauvreau; 08.05.2009

Используйте puppet для настройки среды разработки и рабочей среды. Использование первоклассной системы автоматизации — единственный способ масштабировать ваши операции.

person David Schmitt    schedule 08.05.2009

Всегда есть возможность использовать виртуальные машины (см., например, VMWare Player). Создайте одну среду и скопируйте ее для каждого нового сотрудника с минимальной необходимой настройкой.

person tehvan    schedule 08.05.2009

Раньше у нас было все (и я имею в виду ВСЕ) в SCM (чистый регистр, затем SVN). Когда новый разработчик может войти, он устанавливает ClearCase|SVN и загружает репозиторий. Это также касается случая, когда вам нужно обновить конкретную библиотеку/инструмент, поскольку вы можете просто попросить команды разработчиков обновить свою среду.

Для этого мы использовали два репозитория, поэтому код и инструменты/конфигурация находились в разных местах.

person Mike Reedell    schedule 08.05.2009

Я настоятельно рекомендую Blueprint от DevStructure. Это ПО с открытым исходным кодом, и ваш вариант использования на самом деле является точной причиной, по которой мы изначально написали программное обеспечение. Наши цели несколько изменились, но это по-прежнему идеальный инструмент для того, что вы описываете. Короче говоря, вы можете создавать повторно используемые конфигурации сервера — очень простое управление конфигурацией. Надеюсь, это поможет!

https://github.com/devstructure/blueprint (Blueprint @ Github)

person Matt Tanase    schedule 04.06.2011
comment
Это среда разработки или сервер? - person nimcap; 04.06.2011

Я сам думал об этом. Есть некоторые другие технологии, которые вы могли бы добавить в смесь. Вот что я сейчас настраиваю:

  • Предустановленные установочные образы на основе PXE (Debian Squeeze). Вы можете запустить пустую машину (или новое виртуальное устройство) и выбрать образ в меню загрузки PXE. Это имеет большое преимущество, заключающееся в возможности установки вашей среды на физические машины (в дополнение к виртуальным устройствам).
  • Кто-то уже упоминал Puppet. Я использую CFEngine, но это аналогичная сделка. По сути, ваша конфигурация задокументирована и централизована в файлах политик, которые постоянно применяются агентом на клиенте.
  • если вам не нужна жесткая среда (т. е. разработчики могут выбирать комбинацию наборов инструментов), вы можете свернуть свои собственные пакеты deb, чтобы новые разработчики могли, например, вводить sudo apt-get install acmecorp-eclipse-env или sudo apt-get install acmecorp-intellij-env.
  • Немного не по теме, но если вы используете среду на основе Debian (например, Ubuntu), рассмотрите возможность установки apt-cacher (пакетный прокси). Помимо экономии пропускной способности, это значительно ускорит установку (поскольку пакеты кэшируются в вашей локальной сети).
person hoipolloi    schedule 17.08.2011

Если вы используете OSX и работаете с Rails. Я бы предложил либо:

person Neil    schedule 10.09.2014

Если вы используете машины в стандартной конфигурации, вы можете создать образ диска со свежей идеально сконфигурированной установкой — это очень популярный подход во многих корпорациях (и не только среди разработчиков). Если вам нужны отдельно настроенные ОС, вы можете выполнить tar-bz2 все добавленные и измененные файлы после того, как сконфигурированная ОС будет преобразована в желаемую настройку, и просто распаковать ее как root, чтобы создать желаемую среду с нуля.

person Alex Martelli    schedule 08.05.2009

если вы используете вариант Linux, у вас, вероятно, есть система управления пакетами: думает .rpm для fedora/redhat или .deb для ubuntu/debian. многие из вещей, которые вы описываете, уже имеют доступные пакеты: svn, eclipse и т. д. вы можете свернуть свои собственные пакеты для программного обеспечения, специфичного для компании, создать репозиторий (возможно, доступный только в локальной сети), а затем ваша установка может быть сведена к одному bash, который добавит репозиторий компании в /etc/apt/sources.list (debian/ubuntu), а затем вызовет команду вроде


/home/newhire$ apt-get update && apt-get install some complete package list

вы можете использовать buildbot, чтобы затем автоматизировать регулярные сборки часто меняющихся пакетов компании.

person si28719e    schedule 08.05.2009

Попробуйте DevScript на странице http://nsnihalsahu.github.io/devscript . Это одна команда, например, devscript lamp или devscript laravel или devscript django. Примерно через несколько минут, в зависимости от скорости вашего интернет-соединения.

person Nihal Sahu    schedule 05.07.2014