Вы можете сделать сборку за один шаг?

14

Из теста Джоэл :

Вы можете сделать сборку за один шаг?

Я должен сказать, что не могу. В настоящее время я работаю над веб-приложением, в котором есть список элементов электронной таблицы, которые необходимо выполнить для развертывания. Итак, мой вопрос, как я могу автоматизировать это ? Это должно быть в масштабах всей организации? Советы / методы?

billy.bob
источник
3
Это зависит от того, какие пункты в списке? В идеале, да, вы должны быть в состоянии автоматизировать это.
Никто не
4
ru.wikipedia.org/wiki/Build_automation Кстати: некоторые остаются один шаг - это слишком много :)
Mchl
Все виды - переместить файлы, сценарий хранимых процедур и т. Д. - 14 шагов!
billy.bob
2
С другой стороны, что в списке вы не можете автоматизировать?
Тианна
1
Вопрос о том, как автоматизировать сборку, не является субъективным и должен быть задан при переполнении стека. Вопрос также должен иметь больше информации о необходимых задачах, чтобы получить полезный ответ.
Дэвид Торнли

Ответы:

10

Make может автоматизировать процесс сборки за один шаг. Make может делать почти все, что вы хотите. Я не уверен, почему Саппоро считает, что Make относится только к C / C ++. Вы можете использовать make для запуска любого типа команды. Он даже не привязан к программированию, хотя именно для этого он обычно используется.

Pemdas
источник
2
make - один из тех инструментов типа "швейцарский армейский нож"; люблю работать с этим. Еще одна вещь, на которую следует обратить внимание, где make была бы полезна, это то, что если вы автоматизируете сборку / процесс / и т. Д., И один или несколько шагов зависят от успешного завершения другого, make остановится, если этот шаг завершится неудачей, не позволив этим другим шагам продолжаться и возможно вызвать проблемы.
Уилл
1
Поскольку многие 'приложения / системы nix устанавливаются с помощью' ./configure; сделать; make install 'Я думаю, что make также используется в качестве движка установки. Если он сможет это сделать, я также уверен, что он сможет решить проблему ОП.
JBRWilkinson
Сделайте, но синтаксис довольно неясен. На сегодняшний день я столкнулся с 2 альтернативами: SCons (намного проще, чем Make + makedepend) и инструмент для автоматизации создания Makefile (проприетарного).
Матье М.
@JbRWilkinson ... как я уже сказал, make может делать практически все, что угодно;)
Pemdas
3

В зависимости от вашей среды, вы можете захотеть взглянуть на Make (C / C ++), Ant / Maven (Java), Gradle (Groovy) - это те, с которыми я знаком. Скорее всего, есть популярное решение для вашей среды.

саппоро
источник
Это среда ASP.NET / SQL
billy.bob
@ m.edmondson - то cruisecontrol.sourceforge.net , вероятно , ваш путь
BoBaH
Еще одна хорошая среда непрерывной интеграции для ASP.NET - TeamCity. Я использовал CruiseControl и TeamCity, и я обнаружил, что TeamCity немного проще в использовании и немного мощнее. Но это может быть уже не так.
RationalGeek
NANT - это вариант .NET ANT, который мы использовали в качестве дополнения к круиз-контролю, который я бы не использовал для создания кода для развертывания, где вы, как правило, хотите, чтобы несколько дополнительных вещей включали / настраивали / устанавливали и изменяли параметры и так далее. , Вот что хорошо умеют ANT / NANT.
Джон Хопкинс
Второе предложение @Jon Hopkinds - nant отлично подходит для вашей среды.
JBRWilkinson
3

На работе мы используем FinalBuilder , который упрощает настройку сценария для автоматизации всего процесса: проверка кода, сборка всего, запуск тестов, создание пакета развертывания и т. Д.

Это очень хороший инструмент, и недавно он получил премию Dr. Dobbs Jolt Award за инструменты управления изменениями и конфигурацией.

Мейсон Уилер
источник
0

Конечно, есть способ автоматизировать это. С помощью таких инструментов, как Chef , настроить новый только что установленный сервер можно так же просто, как:

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

В моем случае некоторые шаги, выполняемые этой единственной командой:

  • Установите необходимые библиотеки, программы и модули Python
  • Создать новых пользователей с указанными правами доступа
  • Создавать новые базы данных, загружать необходимую схему, устанавливать владельца и права доступа.
  • Загрузите и создайте код проекта, а затем запишите информацию о конфигурации
  • Переведите все в рабочий режим, запустив серверы баз данных, настроив задания cron и т. Д.

Я не уверен, как Chef будет работать в вашей среде, поскольку поддержка Windows указана как «предварительная», но для системы на основе UNIX это колени пчелы.

Puppet - это похожая система, которая немного старше шеф-повара и может предложить лучшую поддержку Windows.

остроносая плоскодонная шлюпка
источник
0

Это просто с Maven в мире Java

mvn clean deploy

В нашей конфигурации это выполняет все необходимое построение файла WAR (при необходимости добавляя JAR-зависимости), развертывание на веб-сервере dev и создание тестовых данных в базе данных dev. После этого Maven выполняет всестороннее функциональное тестирование через SeleniumRC для проверки работоспособности приложения.

Эта единственная команда полностью развертывает приложение на кластере серверов dev, поэтому другие разработчики могут сразу же работать с ним (при условии, что оно прошло тесты). Это необычно для развертывания dev, так как разработчики убедились, что оно работает локально mvn clean install.

Затем артефакт снимка (WAR) копируется в репозиторий Maven для совместного использования с другими разработчиками (согласно стандартному deployповедению Maven ).

Хорошо, но вы только что развернули снимок для dev, как насчет тестирования и производства?

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

После того, как он выпущен, используется простой сценарий сборки для SFTP-файла WAR на кластер тестовых серверов, опять же, когда кто-то наблюдает за процессом, чтобы убедиться, что все в порядке.

Наконец, после того, как все тестировщики будут довольны, неизмененный файл WAR передается по SFTP до отказоустойчивого кластера производственных серверов, когда кто-то внимательно следит за ситуацией и в случае аварии получает немедленную позицию отката.

Гэри Роу
источник
0

Я подумал, что смогу проверить это на нашем тесте Джоэла, так что ...

Я сделал сервер сборки на python, автоматизировал его с помощью pychron .

Код был синхронизирован с VSS из командной строки, сборка осуществляется с помощью Borland Make (большинство IDE создают файлы make для вас независимо от того, называют ли они их так. Delphi раньше выкачивал файлы make и вызывал их .BPG-файлы, теперь они ' «MSBuild XML-файлы, и вы можете использовать MSBuild), а ошибки были помещены в XML-файл, который я только что продолжал добавлять.

Итак ... Просто напишите командный файл и сделайте эти вещи.

  1. Синхронизировать код из системы контроля версий
  2. Удалите глупые вещи (отдельные файлы конфигурации для проектов), которые, как вы знаете, помешают вам построить все.
  3. Построить все (я бы все построил, сделать все, брат).
  4. Записывайте свои ошибки, предупреждения и прочее, но не прекращайте строить. (Если вы действительно умны, вы извлечете имя последнего человека, который проверяет файл, вызвавший сбой сборки, и отправляет ему настиграму)
Питер Тернер
источник