С Buildbot Source Step: почему «кодовая база» не может быть установлена ​​​​с помощью Interpolate, а «repurl» может?

У меня есть фабрика, которую я использую в нескольких билдерах, и я устанавливаю специфические настройки билдера через util.Property и util.Interpolate. Хотя это прекрасно работает для repourl и branch, это просто не работает для codebase. Следующий фрагмент кода показывает шаг исходного кода, как я хотел бы использовать его в моей конфигурации Buildbot.

factory.addStep(
    steps.Git(repourl=util.Interpolate('git://repo_base_path/%(prop:build_repository)s', default=''),
              branch=util.Property('build_branch', default='master'),
              mode='full',
              codebase=util.Interpolate('%(prop:build_repository)s', default=''),
              method='copy', submodules=True, clobberOnFailure=True)
    )
)

Без кодовой части все работало нормально. Затем я подумал, что в некоторых случаях мне нужно будет установить кодовую базу, поэтому я добавил строку кодовой базы, что привело к следующей ошибке:

[-] Configuration Errors:
[-]   error while parsing config file: sequence item 1: expected
      string, Interpolate found traceback in logfile

Кто-нибудь знает, почему нельзя установить codebase через Interpolate, тогда как то же самое можно сделать с repourl? Есть ли у кого-нибудь идея, как установить кодовую базу для исходного шага на что-то отличное от '' и при этом не создавать отдельный экземпляр фабрики для каждого сборщика?

Любое понимание этого и любое полезное предложение высоко ценятся.


person Tyrnan    schedule 28.05.2015    source источник
comment
Я думал, что классы Property и Interpolate были в пакете buildbot.process.properties, по крайней мере, они были в различных версиях за последние несколько лет. Как вы добираетесь до них через util?   -  person doshea    schedule 29.05.2015
comment
@doshea: кажется, что шаги и связанные с ними вещи теперь реализованы в виде плагина. Текущая документация предлагает использовать from builbot.plugins import steps, util, а затем обращаться к шагам через пространство имен steps и, например, Properties через утил. Так что в данном случае util относится не к buildbot.utils, а к buildbot.plugins.util. Извините, что эта информация отсутствует в моем вопросе.   -  person Tyrnan    schedule 29.05.2015
comment
Не нужно извиняться, я должен был лучше прочитать последнюю документацию :) Спасибо за информацию!   -  person doshea    schedule 01.06.2015


Ответы (1)


Я думаю, что это ошибка в Buildbot. Глядя на исходники Buildbot 0.8.12, я вижу, что в buildbot/steps/source/git.py, в class Git атрибут renderables включает "codebase", что должно означать, что вы можете использовать Interpolate таким образом. Предположительно какой-то другой код предполагает, что он может интерпретировать codebase как строку во время анализа конфигурации.

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

Похоже, что поддержка Git в старом стиле в buildbot/steps/source/oldsource.py не поддерживает codebase в качестве визуализируемого, но мне не кажется, что вы это используете. Однако я не совсем уверен, потому что я не уверен, что означает steps.Git.

person doshea    schedule 29.05.2015
comment
Спасибо, что искали это. Думаю, тогда я отправлю отчет об ошибке. Кстати. steps.Git относится к buildbot.plugins.steps, и именно здесь сейчас находятся шаги нового стиля (они по-прежнему доступны через buildbot.steps.source, но, насколько я понимаю, в будущем их может не быть). Я хотел проголосовать за ваш ответ, но не могу, потому что у меня пока недостаточно репутации... - person Tyrnan; 29.05.2015