Buildbot: add separate builders for master, lts and custom branches

This avoids too much rebuilding, and makes it easier to see which branches
are failing.
This commit is contained in:
2020-06-15 17:28:23 +02:00
parent ce6e2526d2
commit 3cd1ea8005
2 changed files with 64 additions and 44 deletions

View File

@@ -3,12 +3,6 @@
# <pep8 compliant>
# List of the branches being built automatically overnight
NIGHT_SCHEDULE_BRANCHES = [
"master",
"blender-v2.83-release",
]
# Dictionary that the buildmaster pays attention to.
c = BuildmasterConfig = {}
@@ -78,7 +72,7 @@ def schedule_force_build(name):
branch=forcesched.StringParameter(
name="branch",
label="Branch:",
default="master",
default="custom-branch-name-here",
regex=r'^[a-zA-Z0-9][A-Za-z0-9\._-]*$'),
# Hide revision. We don't want to allow anyone to overwrite the
# master build with an older version. Could be added back once we
@@ -99,23 +93,20 @@ def schedule_force_build(name):
properties=[]))
def schedule_nightly_build(name, hour, minute=0):
def schedule_nightly_build(name, branch, hour, minute=0):
"""
Creates scheduler for nightly builds for a given builder.
"""
for current_branch in NIGHT_SCHEDULE_BRANCHES:
scheduler_name = "nightly_" + name
if current_branch:
scheduler_name += ' ' + current_branch
c['schedulers'].append(timed.Nightly(
name=scheduler_name,
codebases={
"blender": {"repository": "",
"branch": current_branch}},
branch=current_branch,
builderNames=[name],
hour=hour,
minute=minute))
scheduler_name = "nightly_" + name + ' ' + branch
c['schedulers'].append(timed.Nightly(
name=scheduler_name,
codebases={
"blender": {"repository": "",
"branch": branch}},
branch=branch,
builderNames=[name],
hour=hour,
minute=minute))
# BUILDERS
@@ -137,27 +128,30 @@ from buildbot.steps.master import MasterShellCommand
# add builder utility
c['builders'] = []
buildernames = []
def add_builder(c, name, factory, branch='',
def add_builder(c, name, platforms, factory, branch='',
rsync=False, hour=3, minute=0):
workernames = []
for platform in platforms:
workernames = []
builder_name = name + '_' + platform
for slave in master_private.slaves:
if name in slave['builders']:
workernames.append(slave['name'])
for slave in master_private.slaves:
if platform == slave['platform']:
workernames.append(slave['name'])
builder_name = name + '_' + slave['platform_short']
if workernames:
f = factory(name, branch, rsync)
c['builders'].append(BuilderConfig(name=name,
workernames=workernames,
factory=f,
tags=['blender']))
buildernames.append(name)
if workernames:
f = factory(builder_name, branch, rsync)
c['builders'].append(BuilderConfig(name=builder_name,
workernames=workernames,
factory=f,
tags=['blender']))
schedule_nightly_build(name, hour, minute)
schedule_force_build(name)
if branch == '':
schedule_force_build(builder_name)
else:
schedule_nightly_build(builder_name, branch, hour, minute)
# common steps
@@ -248,11 +242,24 @@ def generic_builder(id, branch='', rsync=False):
# Builders
add_builder(c, 'mac_x86_64_10_9_cmake', generic_builder, hour=1)
add_builder(c, 'linux_glibc217_x86_64_cmake', generic_builder, hour=1)
# NOTE: Visual Studio 2017 (vc15) is using libraries folder from
# Visual Studio 2015 (vc14)
add_builder(c, 'win64_cmake_vs2017', generic_builder, hour=1)
add_builder(c,
'master',
['windows', 'macOS_10_15', 'linux_centos7'],
generic_builder,
branch='master',
hour=1)
add_builder(c,
'lts_283',
['windows', 'macOS_10_9', 'linux_centos7'],
generic_builder,
branch='blender-v2.83-release',
hour=1)
add_builder(c,
'custom_branch',
['windows', 'macOS_10_15', 'linux_centos7'],
generic_builder,
branch='',
hour=1)
# HORIZONS
from datetime import timedelta

View File

@@ -1,5 +1,18 @@
slaves = [
{'name': 'linux_glibc219_x86_64_chroot',
'password': 'barbarianna',
'builders': ['linux_glibc217_x86_64_cmake']}
{'name': 'linux_something_something',
'password': 'something',
'platform': 'linux_centos7',
'platform_short': 'linux'}
{'name': 'macOS_10_15_something_something',
'password': 'something',
'platform': 'macOS_10_15',
'platform_short': 'macos'}
{'name': 'macOS_10_9_something_something',
'password': 'something',
'platform': 'macOS_10_9',
'platform_short': 'macos'}
{'name': 'windows_something_something',
'password': 'something',
'platform': 'windows',
'platform_short': 'windows'}
]