Облегченная непрерывная интеграция для централизованного набора инструментов Haskell / Darcs? - PullRequest
9 голосов
/ 22 октября 2010

Я хочу немного простого CI для небольшой настройки dev. Две причины - полная сборка занимает некоторое время, а ожидаемый набор тестов также займет некоторое время. Я действительно предпочел бы не вдаваться в голову одному из крупных игроков, которым нужен контейнер для Java-приложений или что-то еще, чтобы показывать причудливые графики с несколькими цветами и т. Д. Я бы заинтересовался чем-то «культурно», в частности, Haskellish - предпочтительно взаимодействием командной строки или файлы конфигурации, и взаимодействие с Darcs является абсолютным необходимо .

Существуют ли такие инструменты, или я застрял с одним из крупных игроков или пишу свой собственный?

Кстати, я вспоминаю, что для GHC настроена ферма сборки. Глядя на это, я замечаю, что раньше он использовал buildbot, а теперь использует собственный компоновщик. Хотя они настроены для другого рабочего процесса, будет ли любое из них более простым, более простым решением?

Редактировать: сейчас я собираюсь с buildbot. Буду обновлять, как это работает.

Edit2: Бен Липпмайер добавил хакерскую сборку buildbox, которая также, кажется, является основой для родного решения Haskell CI. В настоящее время он недокументирован и, вероятно, не полностью готов для моих нужд, но вот он: http://hackage.haskell.org/package/buildbox. Он использовал его, чтобы написать buildbot для repa: http://code.haskell.org/repa/repa-head/repa-bot/.

Ответы [ 2 ]

4 голосов
/ 16 декабря 2010

Итак, вот что я сделал.

  1. установите buildbot-server / buildslave в соответствии с инструкциями.
  2. установите скрипт darcs_buildbot: https://github.com/buildbot/buildbot/blob/master/master/contrib/darcs_buildbot.py
  3. изменитеприменить posthook в _darcs / defaults (это для общего репо) к следующему:

применить posthook chmod a + w myrepo / _darcs / index myrepo / .darcs_buildbot-lastchange;/usr/local/bin/darcs_buildbot.py buildbotmachine: buildbotport;

apply run-posthook

Что касается файла конфигурации buildbot, то что-то вроде следующего является простой настройкой:

darcsroot = "/myrepo/"

from buildbot.process import factory
from buildbot.steps.source import Darcs
from buildbot.steps.shell import Compile
from buildbot.steps.shell import Test
f1 = factory.BuildFactory()
f1.addStep(Darcs(repourl=darcsroot))
f1.addStep(Compile(command=["ghc","--make","Setup.hs"]))
f1.addStep(Compile(command=["./Setup","configure"],warningPattern="^\(Warning:"))
f1.addStep(Compile(command=["./Setup","build"],warningPattern="^\(Warning:"))    
b1 = {'name': "buildbot-full",
      'slavename': "bot1name",
      'builddir': "full",
      'factory': f1,
      }
c['builders'] = [b1]

Планировщики и т. Д. Также должны быть настроены в соответствии с документами.

Теперь, когда кто-либо подталкивает к общему репо, сборка запускается.Дополнительные тестовые команды также могут быть легко добавлены.

До сих пор это работало замечательно!

Я думаю, что я установил патч для buildslave для постепенного извлечения, а не для полного репо, но я могуне помню, что я сделал, и не знаю, нужно ли это для новых версий.

3 голосов
/ 27 октября 2010

Команда darcs сама использует buildbot . Я не совсем уверен, где находятся сценарии, но я уверен, что если вы спросите в списке рассылки или IRC, их будет легко достать.

...