Инсталлятор + SVN
#1
Отправлено 28 июля 2008 - 04:21
#2
Отправлено 28 июля 2008 - 13:58
#3
Отправлено 29 июля 2008 - 02:56
#4
Отправлено 29 июля 2008 - 06:36
То, что вы ищете называется сервер непрерывной интеграции (continuous integration server). Таких есть много под разные технологии (java, .NET, etc). Начать поиск подходящего вам инструмента можно например здесь в разделе инструменты, ну и далее по ссылкам. Более объемная подборка и сравнения инструментов есть тут.Извлекать из репозитория файлы для сборки инсталляционного пакета. Очень желательна поддержка автоматичческих сборок. Пытаемся перейти сначала на еженедельные сборки.
Мой совет переходить сразу на непрерывную интеграцию -- это не сложно.
Чубака — это вуки с планеты Киши, но живет Чубака на планете Эндо, а теперь вдумайтесь:
в этом же нет смысла. С какой стати Чубаке, вуки высотой два с половиной метра,
жить среди эвоков, которые чуть выше полуметра. В этом нет абсолютно никакого смысла.
#5
Отправлено 29 июля 2008 - 19:02
Я посмотрел на Wise Installer - у меня есть только 5-й, он SVN в упор не видит, хотя интеграция контроля версий там заявлена. Приглядываюсь к WIX, бесплатный , мощный, консольный - позволит писать скрипты, в которых вручную можно выдёргивать head revision из репозиториев.
Остальные, во всяком случае в описаниях, что я читал, нигде не заявляют о возможности сборки из репозитория.
#6
Отправлено 29 июля 2008 - 21:53
Заранее прошу прощения, особо не вникал в дискуссию,Спаибо за ссылки, внимательно посмотрел. Интересно всё это, возможно мы когда ни будь к этому придём, но сейчас другая задача - из скомпилированных файлов собирать инсталляшки. В репозиториях SVN предполагается хранить не только исходный код но и скомпиленый файлы. Так что вопрос остался. (Или я чего то не понял в идее непрерывных сборок)
но, по-моему, вы путаете теплое с мягким и мешаете горячее с синим.
Не очень понятен смысл "сборки из репозитория". У вас есть инструмент для сборки. Он должен работать с тем, что дадут. У вас есть репозиторий. Он должен отдавать то, что просят. На этом - всё.
Первый шаг к нормальному техпроцессу сборки - это организация сборки в одну-две команды. Идеальная последовательность команд: взять свежие исходники - сконфигурировать - собрать - опубликовать (или "задеплоить" в случае уже размещенных приложений).
Нет никакого смысла как-то особо затачивать процедуру сборки на задачу "взять то, что прямо сейчас лежит в репозитории". Сборка - процесс осмысленный. Вы знаете запланированные изменения, принимаете решение в определенной точке, добываете исходники, соответствующие этой точке, собираете их, и (по желанию) фиксируете эту точку в репозитории: "вот здесь нам удалось собраться с нужными нам изменениями".
Собственно, простая сборка из того, что есть, и того, чего хочется - первый шаг к непрерывной интеграции, о которой вам уже рассказали. Это - правильное направление движения. Наиболее известный инструмент для непрерывной интеграции - CruiseControl.
#7
Отправлено 30 июля 2008 - 04:30
Вовторых. Разделим понятия сборка бинарников и сборка инсталляшки. К сборке бинарников я не имею никакого отношения и в ближайшем обозримом будущем иметь не буду. Мне через репозиторий передаются только бинарники. Из них я должен собрать инсталляшку всего пакета.
Втретьих. Вопрос всего лишь в том, что бы программа собирающая инсталляшки (WiseInstaller например) умела делать чекаут из свн-а сама, не вынуждая меня делать это вручную. Тоесть хочу сделать
Я не увидел в СС средств для сборки инсталляшек, а WiseInstaller - средств работы с SVN.Первый шаг к нормальному техпроцессу сборки - это организация сборки в одну-две команды
В четвёртых.
Собственно про него и спрашиваю. Репозиторий отдавать то что попросят умеет по определению, а вот какой инструмент умеет у него просить, я и хотел выяснить этим топиком. Тоесть инструмента для сборки у меня пока нет. Я его выбираю. Ещё раз подчеркну, из бинарников собрать " *.msi "У вас есть инструмент для сборки. Он должен работать с тем, что дадут. У вас есть репозиторий. Он должен отдавать то, что просят.
Или я всётаки чегото не понимаю.
#8
Отправлено 30 июля 2008 - 05:21
В данном случае нет никакой разницы, что именно выступает "исходниками" для процесса сборки. На входе у нас всегда исходники, даже если это уже бинарники, на выходе у нас готовый deliverable.Вопервых. Никаких исходников нет. Я имею ввиду - для меня они недоступны.
Вовторых. Разделим понятия сборка бинарников и сборка инсталляшки. К сборке бинарников я не имею никакого отношения и в ближайшем обозримом будущем иметь не буду. Мне через репозиторий передаются только бинарники. Из них я должен собрать инсталляшку всего пакета.
Да. Не понимаете. Как выглядит процесс сборки сейчас? Ну, предположим, как-то так (предположим, используется NSIS):Втретьих. Вопрос всего лишь в том, что бы программа собирающая инсталляшки (WiseInstaller например) умела делать чекаут из свн-а сама, не вынуждая меня делать это вручную. Я не увидел в СС средств для сборки инсталляшек, а WiseInstaller - средств работы с SVN.
В четвёртых. Репозиторий отдавать то что попросят умеет по определению, а вот какой инструмент умеет у него просить, я и хотел выяснить этим топиком. Тоесть инструмента для сборки у меня пока нет. Я его выбираю. Ещё раз подчеркну, из бинарников собрать " *.msi "
Или я всётаки чегото не понимаю.
c:\Work>svn checkout <репозиторий>…Checked out revision 8810.c:\Work>nsis.exe <скрипт>Этот пример решает задачу "собрать инсталлятор из SVN"? По-моему, решает. Но вам хочется делать это не двумя командами, а одной, правильно? Напишите батник, который будет это делать.
Если же хочется запускать батник не руками, а как-нибудь автоматически - по таймеру, например, или после появления в репозитории новых исходников, или просто чтобы была где-нибудь большая кнопка "СОБРАТЬ" - используется средство автоматизации, такое, как CruiseControl.
Краткий курс по CruiseControl для тех, кто не прочитал его описание на сайте. В каждом проекте есть а) действия - например, получить код из репозитория, запустить батник, собирающий продукт; б) триггеры, запускающие действия - например, "в 9 утра в субботу" или "после каждого сабмита в репозиторий"; в) паблишеры - "сообщить о результатах сборки по электронной почте" и тд и тп. Используя эти три средства, вы делаете свой автоматический сборщик. Самому CC все равно, что вы делаете с его помощью, он просто умеет связывать все в один процесс.
Можно еще почитать книжку Pragmatic Project Automation, правда там про Java-проекты в основном.
Что касается конкретных средств приготовления инсталляторов, я бы не советовал Wise, а советовал бы Wix. У последнего больше преимуществ и (кажется) меньше проблем. Но - не надо заставлять Wix работать с SVN. Его дело - собрать продукт из того, что лежит на диске. Как свежие исходные файлы попадают на диск - не его проблема.
#9
Отправлено 30 июля 2008 - 06:56
Основная идея непрерывной интеграции обратная -- сделать сборку из осмысленного процесса автоматическим процессом.Сборка - процесс осмысленный.
"Получить код из репозитория" не надо относить к действиям. Это скорее триггер "что-то изменилось в репозитории".В кадом проекте есть а) действия - например, получить код из репозитория, запустить батник, собирающий продукт;
А в целом согласен, данную проблему может решить простой скрипт и инсталлятор, который не надо прикручивать к SVN, кроме как через скрипт. CruiseControl -- более "промышленное" решение этой проблемы.
Чубака — это вуки с планеты Киши, но живет Чубака на планете Эндо, а теперь вдумайтесь:
в этом же нет смысла. С какой стати Чубаке, вуки высотой два с половиной метра,
жить среди эвоков, которые чуть выше полуметра. В этом нет абсолютно никакого смысла.
#10
Отправлено 30 июля 2008 - 06:59
Основная идея непрерывной интеграции обратная -- сделать сборку из осмысленного процесса автоматическим процессом.Сборка - процесс осмысленный.
"Получить код из репозитория" не надо относить к действиям. Это скорее триггер "что-то изменилось в репозитории".В кадом проекте есть а) действия - например, получить код из репозитория, запустить батник, собирающий продукт;
А в целом согласен, данную проблему может решить простой скрипт и инсталлятор, который не надо прикручивать к SVN, кроме как через скрипт. CruiseControl -- более "промышленное" решение этой проблемы.
Чубака — это вуки с планеты Киши, но живет Чубака на планете Эндо, а теперь вдумайтесь:
в этом же нет смысла. С какой стати Чубаке, вуки высотой два с половиной метра,
жить среди эвоков, которые чуть выше полуметра. В этом нет абсолютно никакого смысла.
#11
Отправлено 30 июля 2008 - 07:37
Непрерывные сборки - да. Релизные - автоматические, но с заведомо определенной конфигурацией.Основная идея непрерывной интеграции обратная -- сделать сборку из осмысленного процесса автоматическим процессом.
Насколько я помню, существуют сценарии, когда нужно мониторить одну ветку, а "строить" - другую (тесты, например, запускать). Если не ошибаюсь, для таких случаев существует вариант сборки без обновления исходников. Впрочем, утверждать не буду."Получить код из репозитория" не надо относить к действиям. Это скорее триггер "что-то изменилось в репозитории".
#12
Отправлено 30 июля 2008 - 08:08
Я имел ввиду, что в CruiseControl получение кода из SVN это modificationset, а запуск батника это schedule. Если так стало понятней.Насколько я помню, существуют сценарии, когда нужно мониторить одну ветку, а "строить" - другую (тесты, например, запускать). Если не ошибаюсь, для таких случаев существует вариант сборки без обновления исходников. Впрочем, утверждать не буду.
То, что вы описали вроде тоже можно сделать, но я не делал.
Чубака — это вуки с планеты Киши, но живет Чубака на планете Эндо, а теперь вдумайтесь:
в этом же нет смысла. С какой стати Чубаке, вуки высотой два с половиной метра,
жить среди эвоков, которые чуть выше полуметра. В этом нет абсолютно никакого смысла.
#13
Отправлено 30 июля 2008 - 09:28
А зачем интегрировать эти два совершенно разных продукта?
Сделайте промежуточную среду сборки. По таймеру или по кнопке стартует скрипт и выполняет следующие действия:
- выкачать необходимые проекты из хранилища
- собрать нужную инсталляшку. Или все.
Там же выполняются промежуточные действия по настройке среды, переменных окружения и прочего.
С промышленными средствами не сталкивался для таких работ, у нас подобные системы писались самостоятельно. Для начальных задач там нужно не так много скриптов.
Совет. Для сборки инсталляшек нужно делать проекты одинаковые по своей структуре, чтобы внешнему скрипту был виден только один вход и он мог обойти все проекты по списку.
#14
Отправлено 30 июля 2008 - 09:41
Вообще говоря, для решения исходного вопроса действительно достаточно обычного батника.С промышленными средствами не сталкивался для таких работ, у нас подобные системы писались самостоятельно. Для начальных задач там нужно не так много скриптов.
Но раз уж затронули тему непрерывной интеграции, то системы типа CruiseControl хороши тем, что практически "из коробки" очень быстро позволяют решить сразу несколько очень важных задач:
- сборка и тестирование в "чистой" среде (первая проверка - собирается ли код где-либо еще, кроме машины разработчика)
- удобная панель управления с хорошим обзором всех проектов
- сама по себе непрерывная интеграция: если сборка делается достаточно быстро, есть шанс узнать о ломающем все сабмите почти сразу же после него
- быстрое автоматическое тестирование: даже базовый набор тестов позволит получать результаты "смок-теста", вообще не напрягаясь
- расширяемая автоматизация: с результатами сборки можно сделать практически все, что угодно - выложить на сайт, отправить почтой, включить сирену (http://www.martinfow...eWhatsHappening)
#15
Отправлено 30 июля 2008 - 12:26
#16
Отправлено 30 июля 2008 - 12:40
Вообще говоря, для решения исходного вопроса действительно достаточно обычного батника.
Но раз уж затронули тему непрерывной интеграции, то системы типа CruiseControl хороши тем, что практически "из коробки" очень быстро позволяют решить сразу несколько очень важных задач
Да, видимо набор функций и требований достаточно стандартен. А вот способы решения различны. :)
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных