Управление версиями и выпусками
существуют ли так называемые" системы управления версиями", которые также поддерживают фактическое управление выпусками / развертывание ?
магазин мэйнфреймов, в котором я работал, имел автоматизированный инструмент управления выпусками, который не только контролировал параллельные модификации источников, но и заботился о запуске компиляторов, прекомпиляторов, утилит привязки баз данных и т. д. так далее., что делает его полностью автоматизированным инструментом развертывания.
Я понимаю, что" более современная " версия средства управления поддерживают только часть управления версиями. Правильно ли это понимание ?
8 ответов
Это совершенно неверно. Любой современный инструмент управления версиями поддерживает как pre, так и post commit hooks, после чего вы можете запустить любой код.
в subversion мы используем крюк post-commit для развертывания копии приложения на dev-сервере каждый раз, когда разработчик проверяет код.
на наших фактических производственных серверах у нас есть код, который проверяет и затем развертывает стабильные теги второстепенных версий, поскольку они фиксируются в репо менеджерами релизов.
контроль версий имеет мало общего с управлением выпуском или развертыванием, поэтому имеет смысл, что VCSs не пытаются сделать это.
то, что я видел в этой области, - это build или серверы непрерывной интеграции (CI). Они слушают изменения в VCS, делают новую проверку на любой фиксации, а затем пытаются построить все. Таким образом, они интегрируют VCS и инструменты сборки, собирают журналы из них и представляют все в хорошем веб-интерфейсе.
этот таким образом, каждый инструмент может оставаться простым.
[EDIT] добавленное значение сервера CI:
Он может анализировать выходные данные ваших сценариев сборки и представлять обзор в Почте или веб-странице.
Он гарантирует, что все тесты выполняются после фиксации. Нет больше ", но это работает для меня".
некоторые из них поддерживают отложенную фиксацию (она будет фиксировать изменения только в VCS, когда все тесты run)
Он может запускать сборки на нескольких проектах, которые зависят друг от друга.
Это зависит от того, сколько денег и времени вы хотите инвестировать в такие системы. многие люди используют простой контроль версий, например svn, и управляют выпусками вручную (используя метки и ветви) Есть и другие (бесплатные) инструменты для непрерывной интеграции (постоянное построение приложения), такие как cruisecontrol.
в поле базы данных я не знаю ничего хорошего в свободном мире, но кто-то здесь может завершить это. поэтому теперь я управляю версиями базы данных вручную....
Я думаю, что то, что вы называете release management здесь чаще называют автоматизация сборки. В этом пространстве есть различные инструменты (make, ant, Nant и т. д.), Но они, как правило, существуют как отдельные инструменты. Часто можно вытащить код из отдельного управления версиями, и вы получите продукты, предназначенные для наблюдения за процессом (который называется непрерывной интеграцией, когда это делается автоматически.)
есть некоторые поставщики, которые отправляют сквозные инструменты, которые идут под заголовком Управление Жизненным Циклом Приложений
--> Я понимаю,что" более современные " инструменты управления версиями поддерживают только часть управления версиями. Правильно ли это понимание ?
VCS просто имеет дело с частью управления версиями, и это бессмысленно, если вы не можете получать уведомления об изменениях (и после того, как кто-то реализовал основы vcs, не будет никаких трудностей, чтобы обеспечить это; -))
--> магазин мэйнфреймов, в котором я работал, имел автоматизированный инструмент управления выпуском, который не только управлять параллельными модификациями источников, но и заботиться о запуске компиляторов, прекомпиляторов, утилит привязки баз данных и т. д. так далее., что делает его полностью автоматизированным инструментом развертывания.
Это называется автоматизацией сборки, и да, очень желательно, чтобы лучшие биты проекта были "готовы к отправке", когда кто-то вносит изменения, но не обязательно. Вы можете делайте все, что хотите, с инструментами, упомянутыми ранее (они расширяемы).
в непрерывная практика интеграции-это интерполяция этих точек на пути таким образом, у вас есть только чистый, стабильный и благородный код в репозиториях. Существуют так называемые серверы CI, которые соединяют части VC и BA.
проверьте эту страницу на CI http://martinfowler.com/articles/continuousIntegration.html
и если кому-то нужен сервер CI, совместимый со многими инструментами BA и многими VCS взгляните на JetBrains TeamCity
Надежда это помогает
в настоящее время я разрабатываю веб-приложение для управления выпуском, и если вы хотите быть бета-пользователем, пожалуйста, дайте мне знать. У меня есть рабочая версия для основных процессов управления выпусками, таких как возможность создавать выпуски с помощью изменений выбора вишни, которые вы хотите (автоматически заботясь об изменениях зависимостей), и развертывать или откатывать в любой момент истории выпуска во многих различных средах (тестовых или производственных серверах). В настоящее время он поддерживает интеграцию с SVN.
пожалуйста http://www.ngashint.com для сайта блога проекта. Вы можете оставить свой адрес электронной почты, чтобы начать получать бета-версию или напишите Мне kzt001[at]gmail.com
этот вопрос привлек мое внимание, из-за
'... так называемые "системы контроля версий" ...'
в вопросе, и из-за вопроса, помеченного системы управления версиями ...
Я прихожу из мира мэйнфреймов (тоже), и мэйнфрейм " SCM " (=Управление изменениями программного обеспечения) - это все, что мы делали в течение последних 25 лет или около того.
Я немного удивлен (может быть "в шоке"?) чтобы увидеть все так называемые синонимы системы управления версиями тег. Особенно scm tag (и я не уверен, что процесс SE должен предложить, чтобы больше не рассматривать его как синоним). SCM, по крайней мере, в мире мэйнфреймов, намного больше, чем просто контроль версий (это всего лишь часть SCM). Как насчет любой из этих как-то связанных тем (которые, IMHO, подфункции SCM):
- управление выпуском (часть первоначальный вопрос.)
- процессы развертывания (часть исходного вопроса).
- анализ влияния.
- Workflow-процессов утверждения.
- надежные и практичные тест-средах.
- аварийные процедуры, например, в нерабочее время.
- автоматические откаты (откаты), которые занимают всего несколько секунд.
- аудита (процессы управления).
- ... (и дальше идет список.)
чтобы проиллюстрировать, насколько важны все они, я часто задаю этот вопрос, чтобы подумать: "что нужно сделать, чтобы применить (ошибку?)- исправлено программное обеспечение автоматического пилота в самолете ... Во время полета!?!? Другими словами: "каковы все шаги и процедуры, которые должны быть на месте, прежде чем вы почувствуете себя комфортно для такого исправления во время полета, на котором вы находитесь?".
из различных ответов, представленных ранее, я не уверен (пока), какой из них, если таковые имеются, выберите для такого полета-исправление ошибок.