我如何随意告诉 Buildbot 不要为给定的更改安排构建?
How can I arbitrarily tell Buildbot to not schedule a build for a given change?
在向我的存储库提交更改时,我希望能够实际上告诉 Buildbot 不要为更改安排构建。
我知道 authorization logic 中的 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"]))
您可以使用 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
真正确定 change 是否重要,而不仅仅是一个文件。所以:
def fileIsImportant(change):
if "[skipbuild]" in change.comments:
return False
# There could be more logic here to test other things...
使用此功能,如果提交消息包含文本 [skipbuild]
,则更改不会安排构建。
我更喜欢第一个选项,因为 a) 它不会污染提交消息,b) 我发现在我的存储库根目录中查找要更改的文件并更改它比记住我需要输入的魔术文本更容易跳过构建的提交消息。
在向我的存储库提交更改时,我希望能够实际上告诉 Buildbot 不要为更改安排构建。
我知道 authorization logic 中的 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"]))
您可以使用 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
真正确定 change 是否重要,而不仅仅是一个文件。所以:
def fileIsImportant(change):
if "[skipbuild]" in change.comments:
return False
# There could be more logic here to test other things...
使用此功能,如果提交消息包含文本 [skipbuild]
,则更改不会安排构建。
我更喜欢第一个选项,因为 a) 它不会污染提交消息,b) 我发现在我的存储库根目录中查找要更改的文件并更改它比记住我需要输入的魔术文本更容易跳过构建的提交消息。