Развертывание кода на Haskell, использующего Snap Framework - PullRequest
2 голосов
/ 24 сентября 2011

Каков ваш опыт стабильного развертывания кода на Haskell для производства в Snap?

Если на сервере происходит сбой компиляции, я бы хотел прервать развертывание, а в случае успешного завершения я хотел бы, чтобывключите Snap-сервер и запустите новую версию.

Я знаю, что есть много способов.Все от rsync до git-hooks (git pull был кошмаром).Но я хотел бы услышать ваш опыт.

Ответы [ 2 ]

4 голосов
/ 24 сентября 2011

Там, где я работаю, мы используем Happstack и развертываем в Ubuntu linux.Мы на самом деле дебианизируем веб-приложение и все зависимости, а затем создаем их в авто-сборщике.

Для фактической установки на сервере мы просто запускаем apt-get update && apt-get install webapp-production

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

Недостатком является то, что apt-get и cabal-install плохо ладят.Вы должны либо собрать все через apt-get, либо сделать все через cabal-install.

3 голосов
/ 25 сентября 2011

Вот что мы делаем.Прежде всего, наши серверы - это все та же версия Ubuntu, а также наши машины для разработки.Мы пишем код, тестируем и т. Д. Независимо от того, что мы хотим использовать, и когда мы будем готовы продвинуться, мы создадим машину (и) разработчика.Пока это правильно скомпилировано, мы останавливаем (количество серверов внешнего интерфейса) / 2, rsync каталог resources и новую копию двоичного файла, а затем используем сценарии, чтобы запустить его резервное копирование.Затем повторите для другой половины.

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

...