BuildBot — Возможно ли выполнить динамическую проверку репозитория?

#python #continuous-integration #buildbot

#python #непрерывная интеграция #buildbot

Вопрос:

Моя цель — настроить buildbot, который прослушивает веб-ссылки с сервера github, а затем создает репозиторий, указанный в webhook, с помощью общей make all команды.

Проблема, с которой я сталкиваюсь, заключается в том, что она появляется на этапах сборки, мне нужно заранее указать репозиторий github, т. Е.

 factory.addStep(
    steps.GitHub(
        repourl= "github.<domain>.com/<user>/<repo>/", 
        mode='full',
        method='clobber'        
   )
)
  

В идеале я хотел бы иметь возможность извлекать URL-адрес репозитория из http-запроса (очевидно, проверяя его перед слепым запуском кода), а затем проверять его. Что-то вроде:

 factory.addStep(
    steps.GitHub(
        repourl= request["repo_url"], 
        mode='full',
        method='clobber'        
   )
)
  

Возможно ли это в среде buildbot? Мы были бы весьма признательны за любые советы или дополнительную документацию для ознакомления!!

Комментарии:

1. Может быть, подойдет что-то вроде этого: docs.buildbot.net/current/manual/configuration/… И / ИЛИ docs.buildbot.net/current/manual/configuration /…

2. Это кажется правильным, но я не могу понять, как получить подробную информацию об исходном webhook в объекте свойств сборки

3. Проверьте метод запроса на извлечение дескриптора: github.com/buildbot/buildbot-contrib/blob/master/master/contrib /…

Ответ №1:

Просто закройте, кто-нибудь еще сталкивался с этим, я нашел два потенциальных решения. Во-первых, в webhook есть недокументированная опция, которая позволяет добавлять всю информацию HTTP-запроса в объект properties:

 'www' : { 
    ...
    "change_hook_dialects" : {'github': {"github_property_whitelist": "*"}},
    ...
}
  

Затем это дает вам доступ ко всей информации о http-запросе на этапах планировщика / компоновщика. Затем вы также можете получить информацию о свойствах на этапе build_steps, используя свойства util, т.Е.

 factory.addStep(
    steps.GitHub(
        repourl= util.Property('repository'), 
        mode='full',
        method='clobber', 
        submodules=True
    )
)