Buildbot — паровозик, который смог – Сказка – Что есть buildbot?



Buildbot — паровозик, который смог – Сказка – Что есть buildbot?

0 0


presentation-buildbot-develcamp

Buildbot -- паровозик, который смог

On Github hgenru / presentation-buildbot-develcamp

Buildbot — паровозик, который смог

Сказка

Сейчас я расскажу вам сказку.
Разработчикам сложного программного продукта была нужна гибкая система непрерывной интеграции.
И обратились разработчики к Дженкинсу: "Мы знаем что ты взрослый и опытный, помоги нам создать гибкую систему интеграции!" На что Дженкинс им ответил: "Без проблем, вот вам много плагинов разной годности, а если не отыщите ничего подходящего, то позовите Ява-программиста хорошего, чтобы написал он то, что вам нужно!" Разработчики преисполненные оптимизма стали перебирать все плагины, что попадались на глаза. Только вот нужного они, увы, не нашли и даже олдфажные явисты не смогли им помочь, попросту отказываясь писать под Дженкинс.
Тогда разработчики решили посмотреть другие варианты, но ни ТимСити, ни КруизКонтроль, ни Континуум не смогли дать им то, чего они хотели.
И когда разработчики уже почти отчаялись им попался казалось бы ничем не примечательный билдбот. Он был маленьким, но зато всем своим видом кричал: “Я смогу, я смогу, я смогу помочь вам создать гибкую систему непрерывной интеграции!”. Все прониклись его отвагой и даже вот на девелкэмпе о нём рассказать решили.

Что есть buildbot?

Не буду мучить вас лишними разглагольствованиями, а лучше сразу покажу что из себя герой моего сегодняшнего доклада представляет.

Концепция фраемворка

  • бери только то, что нужно
  • проще расширять

Конфиг на python

  • модульность
  • git (версионирование)
  • code review
Это может показаться диким, но в этом есть весьма большое преимущество. модульность - копипастить код больше не нужно git - можем откатиться, если что-то пошло не так code review - уменьшаем количество глупых ошибок

Знать в лицо (buildbot.python.org/all/waterfall)

Tips and Tricks

Пару интересных моментов

Только через мой git!

История о том, как мы билдбот через код-ревью пускали

Прощай, копипаста!

История о том, как можно генерить сборки

Циклы наше всё

for board, f, b in build_branches:
        f1 = factory.BuildFactory()
        f1.workdir="system"
        f1.addStep(
            Repo(manifest_url=url, manifest_branch=b, manifest_file=f,))
        f1.addStep(
            Compile(name="clobber old output",command="rm -rf out"))
        f1.addStep(
            Compile(
                name="compile everything",
                command=buildcommand))
        builddir="%s_%s" % (board, manifest_file)
        b1 = BuilderConfig(
                           name=builddir,
                           slavenames=slaves,
                           builddir=builddir,
                           factory=f1)
        builders.append(b1)
                        

Конец