2015-06-05 34 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)我發現在文件庫根目錄中更改文件更容易,並且更改它比記住我需要放入什麼魔法文本提交消息以跳過構建。

相關問題