如何在定义构建步骤时从 src::branch 属性 计算值

How to compute a value from the src::branch property when definition a build step

我必须根据 src::branch 属性 计算构建步骤的值,并且根据可用的文档,这似乎只能通过定义 custom renderables.

我创建了一个定义如下的自定义可渲染对象:

@implementer(IRenderable)
class DetermineVersion(object):
    def getRenderingFor(self, props):
        if props.hasProperty("src::branch"):
            return "--version=" + props['src::branch'].lower().replace("tag/", "")
        else:
            raise Exception("The property 'branch' (tag/version) must be set")

并在构建步骤中按如下方式使用它:

    f.addStep(steps.ShellCommand(
        name="create_tag",
        command=["python", "createTag.py", DetermineVersion()],
    ))

不幸的是,这似乎没有按预期工作,无论 "branch" 属性 是否设置,我总是看到我的 getRenderingFor 函数抛出异常。

我用错了 属性 名字 src::branch 而不是 branch:

这按预期工作:

@implementer(IRenderable)
class DetermineVersion(object):
    def getRenderingFor(self, props):
        if props.hasProperty("branch"):
            return "--version=" + props['branch'].lower().replace("tag/", "")
        else:
            raise Exception("The property 'branch' (tag/version) must be set")