Инжиниринг релизов Lean Software (Webapplication) - PullRequest
1 голос
/ 30 октября 2008

Я хочу реорганизовать способ выпуска нашего внутреннего программного обеспечения. Весь код (веб-приложения PHP, некоторые Java-приложения и скрипты Perl) проверяется в репозиториях Subversion, но нет веток или тегов, все проверяется в стволе (всего около 1-3 разработчиков на приложение). На производственных серверах linux программное обеспечение напрямую запускается из рабочей копии SVN (на самом деле большинство изменений происходят и там).

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

Существуют ли какие-либо инструменты, которые могут помочь мне сделать это в разнородной (языковой) среде, подобной этой? Или кто-нибудь знает, как это сделать правильно?

В противном случае я подумал бы о написании некоторых релизных (shell) скриптов, которые автоматически создают теги subversion из транка, а затем выполняют проверку соответствующего тега на производственных серверах. Но для меня это звучит довольно хакерски.

Спасибо

Haes.

Ответы [ 4 ]

1 голос
/ 20 ноября 2008

Используйте теги и ветки; сделать его частью цикла разработки. Когда вы обновляете эту ветку «stable-1.0», проверяете изменения и помечаете их как «release-1.0.5», вы просто делаете «svn switch» на сервере с новым тегом. Не сработало, несмотря на то, что проверил это? Вернитесь назад и выясните, что не так.

Но будьте осторожны, ветвление в Subversion может быть проблемой, по крайней мере, до версии 1.5. Если вы или ваши разработчики не имеете опыта работы с ветками, ожидайте немного хлопот и / или ошибок в начале. Но пока вы зафиксировали, код не должен быть потерян (в худшем случае просто сложен для объединения).

Ваши разработчики действительно должны научиться использовать ветвление; это может быть очень полезно для различных целей (не только для разработки релизов).

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

И последнее: не позволяйте никому вносить изменения на вашем производственном сервере. Это может вызвать конфликты, и они, как правило, требуют времени для разрешения. Не говоря уже о том, что он лишает вас возможности воспроизводить данный выпуск на разных рабочих станциях (здесь отлично работает! Почему бы не на сервере? Хмм).

1 голос
/ 22 ноября 2008

Непрерывная интеграция - это определенно правильный путь - любой CI (даже минималистские командные файлы) лучше, чем ничего - но он будет только настолько хорош, насколько применимы ваши политики. Поскольку ваши файлы на самом деле не являются «бинарными» или «распространяемыми», для маркировки выпуска может потребоваться лишь пометить репозиторий или даже просто спрятать номер ревизии Subversion где-нибудь. Важная политика, которая вам нужна, заключается в том, что любой выпуск может быть восстановлен в любое время, когда вам это нужно, чтобы вы могли сравнить текущий и предыдущий выпуски или вернуться к более старому выпуску, если что-то пойдет не так. Не беспокойтесь о «накладных расходах» на создание тегов в SVN - это очень эффективно.

Скрипт выпуска, который делает тег subversion звучит нормально. Реализация CI (я бы порекомендовал CruiseControl, поскольку он идеально подходит для гетерогенной работы, хотя гетерогенность требует немного больше накладных расходов на конфигурацию) - это здорово, поскольку вы можете автоматически запускать процесс при проверке Subversion и запускать автоматические тесты, определяющие, хорош ли он достаточно пометить или нет.

Я бы точно не развернул автоматическое развертывание на сервере релизов. «Зона подготовки» (назовите ее «ночная сборка», «бета-тест» и т. Д.) Была бы лучше. Пусть ваши пользователи откажутся от этого, прежде чем вы решите, что это достаточно хорошо для развертывания на производственных серверах. И, если у вас есть политика, позволяющая выполнять откат к более ранней версии, вы уменьшаете вероятность неудачного развертывания.

Автоматическая проверка на производственных серверах - это единственная «хакерская» часть - автоматическое развертывание с проверкой, тестированием, тегами и бета-тестами достаточно простое. Однако при развертывании производства не должно быть простой кнопки.

0 голосов
/ 12 марта 2010

Я бы использовал Хадсон. В дополнение к извлечению и маркировке в svn (ref sblundy), это может быть полезно при управлении выпусками с соответствующими плагинами . например, вы можете попробовать плагин, чтобы "продвигать" сборки, которые вы развертываете в производство, и вести список как самих продвигаемых сборок, так и журнала изменений / фиксации для различных версий.

0 голосов
/ 30 октября 2008

Некоторые серверы непрерывной интеграции делают подобные вещи, например, Hudson имеет интеграцию subversion. Он может помечать, запускать тестирование и развертывать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...