Возникла проблема после создания собственного buildstep в buildbot - PullRequest
0 голосов
/ 27 сентября 2019

Я создал пользовательский buildstep в buildbot после запуска работника, он выдает мне следующую ошибку.

builtins.AttributeError: У объекта 'MyStep' нет атрибута 'stop'

Шаг: custom_factory.addStep (MyStep (messages = "Hi"))

Если у вас есть пример, как написать пользовательский buildstep, пожалуйста, поделитесь.

1 Ответ

0 голосов
/ 30 сентября 2019

Вы пытаетесь получить доступ к члену вашего класса 'MyStep' с именем 'stop', тогда как этот член не существует.Одним из таких доступов может быть полевой доступ, например «self.stopped».

Съемка в темноте, вот простые пользовательские шаги, которые я выполняю в своих ботах, чтобы предоставить вам примеры:

class _ClearPropertyStep(steps.BuildStep):
    """
        Step that clears a property
    """

    def __init__(self, prop, **kwargs):
        steps.BuildStep.__init__(self, **kwargs)
        assert prop is not None and len(prop) > 0
        self.property = prop

    @defer.inlineCallbacks
    def run(self):
        print("Clearing property " + self.property)
        self.setProperty(self.property, None, str(type(self)))
        yield defer.returnValue(SUCCESS)

Вот еще один:

class _URLStep(steps.BuildStep):
    """
        Step whose only purpose is to show a description and an URL
    """

    renderables = steps.BuildStep.renderables + [
        'url_text',
        'url',
    ]

    def __init__(self, url_text, url, **kwargs):
        steps.BuildStep.__init__(self, **kwargs)
        assert url_text is not None
        self.url_text = url_text
        assert url is not None
        self.url = url

    @defer.inlineCallbacks
    def run(self):
        print("Setting URL: " + str(self.url))
        self.addURL(self.url_text, self.url)
        yield defer.returnValue(SUCCESS)
...