2009-05-08 4 views
72

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

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

ответ

62

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

  • Автоматизированная установка
  • инфы
  • виртуализации
  • управления исходным кодом

Более подробная информация о различные варианты:

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

    • Puppet имеет кривую обучения, но мощный. Вы определяете классы машин (ящик разработки, веб-сервер и т. Д.), А затем выполняет то, что необходимо для установки, настройки и сохранения окна в правильном состоянии. Вы попросили один клик, но Puppet по умолчанию имеет нулевой щелчок, поскольку он периодически проверяет вашу машину, чтобы убедиться, что она по-прежнему настроена по желанию. Он обнаружит, когда файл или режим был изменен, и устраните проблему. В настоящее время я использую это для поддержки нескольких блоков RedHat Linux, хотя он способен обрабатывать тысячи. (Не поддерживает Windows с 2009-05-08).
    • Cfengine - другой. Я видел, как это успешно использовалось в магазине с 70 инженерами, использующими RedHat Linux. Его ограничения были частью причины Кукольного.
    • SmartFrog - еще один инструмент для настройки хостов. Он поддерживает Windows.
    • Сценарии оболочки. RightScale содержит примеры настройки изображения Amazon EC2 с использованием сценариев оболочки.
    • Установите пакеты. В блоке Unix это можно сделать полностью с пакетами, а в Windows msi может быть вариант. Например, RubyWorks предоставляет вам полный пакет Ruby on Rails, устанавливая один пакет, который, в свою очередь, устанавливает другие пакеты через зависимости.
  2. Disk Images Тогда, конечно, есть и disk imaging tools для хранения образа настроенного хозяина таким образом, что он может быть восстановлен на другой хост. Как и в случае с виртуализацией, это особенно хорошо подходит для тестовых ящиков, так как легко восстанавливать вещи до чистого листа. Сохранение актуальности по-прежнему остается проблемой - стоит ли создавать новые изображения только для распространения изменений в конфигурационном файле?

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

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

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

  • Начните с усеченными установками ОС на VMWare госте
  • Выполнить скрипт для установки кукольных и извлечения его конфигурации из исходного кода управления
  • Кукольный компьютер для установки инструментов/компонентов/конфигов
  • Отслеживать файлы из исходного кода для создания и развертывания нашего веб-приложения
+0

В нашем офисе есть окна, linux и mac os. поэтому я выберу вариант виртуализации. – nimcap

+0

Мы летаем с виртуализацией, и это хорошее решение. Когда я запустил его, я заработал 3-4 дня, чтобы настроить, теперь новые разработчики настроены за время, необходимое для копирования изображения VPC. – Burt

+3

Вы писали http://agile.dzone.com/articles/4-methods-automate-development, потому что это звучит очень похоже? –

0

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

1

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

7

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

+0

Работает ли работа в среде VirtualPc/VMWare на производительность? Используете ли вы Visual Studio 2008? –

+0

Я знаю, по крайней мере, один большой магазин программного обеспечения, который делает ВСЕ их разработку исключительно в виртуальных машинах (VMWare). Теперь гораздо лучше, когда у процессоров есть поддержка виртуализации оборудования ... – tomfanning

+0

Вам нужно быть осторожным с конфликтами имен компьютеров. Windows не слишком счастлива, когда две машины с тем же именем отображаются в одной сети. Я также предпочитаю не иметь среду моего разработчика в виртуальной машине. Накладные расходы действительно могут привести к снижению производительности. – Kieveli

13

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

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

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

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

Edit:

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

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

3

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

0

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


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

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

1

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

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

1

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

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

+1

Речь идет о среде разработки или сервере? – nimcap

1

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

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

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

Vagrant

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

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

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

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

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

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

Check it out!

0

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

0

Вы можете скачать последнюю версию Java JDK с Java-сайта компании Oracle - Java SE Загрузки. Инструкции по установке JDK вы найдете в загруженных файлах, следуйте приведенным инструкциям по установке и настройке установки. Наконец, установите переменные среды PATH и JAVA_HOME, чтобы обратиться к каталогу, который содержит java и javac, обычно java_install_dir/bin и java_install_dir соответственно.

Если вы используете Windows и установили JDK в C:\jdk1.8.0_102, вам нужно будет поместить следующую строку в ваш файл C:\autoexec.bat.

set PATH=C:\jdk1.8.0_102\bin;%PATH% 
set JAVA_HOME=C:\jdk1.8.0_102 

В качестве альтернативы, можно также щелкнуть правой кнопкой мыши на Мой компьютер, выберите Свойства, затем Дополнительно, а затем Переменные среды. Затем вы обновите значение PATH и нажмите кнопку OK.

В Linux, если SDK установлен в /usr/local/jdk1.8.0_102, и вы используете оболочку C, вы должны поместить следующий код в ваш .cshrc-файл.

setenv PATH /usr/local/jdk1.8.0_102/bin:$PATH 
setenv JAVA_HOME /usr/local/jdk1.8.0_102 

В качестве альтернативы, если вы используете студию Android, она автоматически узнает, где вы установили свою Java. Android Иды

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

Android Studio 

Eclipse IDE(Deprecated) 

Elysium Academy Обеспечить обучение Android, Microsoft, RedHat, ЦВЗ, и VMware с сертифицированными профессионалами, имеющими очень хороший опыт и навыки