2015-06-05 13 views
0

在对我的存储库提交更改时,我希望能够实际上告诉Buildbot不要为更改安排构建。我该如何任意告诉Buildbot不为一个给定的更改安排构建?

我知道中的stopChange特权,但无论出于何种原因,Buildbot从未给我提供停止更改的按钮,尽管我已给予自己特权。而且,即使它起作用,我也必须在Buildbot开始构建之前捕捉基于Web的UI中的更改。棘手。

这是我创造我的调度:

c['schedulers'].append(SingleBranchScheduler(
    name="foo", 
    change_filter=filter.ChangeFilter(project="foo", branch="master", 
             repository=url), 
    treeStableTimer=300, 
    builderNames=["foo-build"])) 

回答

0

您可以使用fileIsImportant选项来检查文件的变化中存在,如果这个文件被改变了,那么认为的变化不重要,这会导致Buildbot不安排构建。所以:

def fileIsImportant(change): 

    if ".skipbuild" in change.files: 
     return False 

    # There could be more logic here to test other things... 

然后您注册调度程序是这样的:

c['schedulers'].append(SingleBranchScheduler(
    name="foo", 
    change_filter=filter.ChangeFilter(project="foo", branch="master", 
             repository=url), 
    treeStableTimer=300, 
    fileIsImportant=fileIsImportant, 
    builderNames=["foo-build"])) 

通过上面的代码,任何承诺,其中有一个名为.skipbuild文件的变化(出现在根目录的文件您的存储库)不会导致构建进度计划。我使用与上述代码类似的东西来进行自己的Buildbot配置。

另一种选择是检查提交消息。与顾名思义相反fileIsImportant确实是否确定更改是否重要,而不仅仅是一个文件。所以:

def fileIsImportant(change): 

    if "[skipbuild]" in change.comments: 
     return False 

    # There could be more logic here to test other things... 

有了这个功能,如果提交信息有文本[skipbuild],更改将不会安排构建。

我更喜欢第一个选项,因为a)它不会污染提交消息,b)我发现在文件库根目录中更改文件更容易,并且更改它比记住我需要放入什么魔法文本提交消息以跳过构建。

相关问题