← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~cjwatson/lpbuildbot/one-build-per-worker into lp:lpbuildbot

 

Colin Watson has proposed merging lp:~cjwatson/lpbuildbot/one-build-per-worker into lp:lpbuildbot.

Commit message:
Only allow one build on each buildslave at a time.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/lpbuildbot/one-build-per-worker/+merge/399813

This should ensure that xenial/bionic or py2/py3 builds on the same buildslave don't interfere with each other, and also that we can potentially fall back to running everything on a single buildslave if one of them is broken.
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~cjwatson/lpbuildbot/one-build-per-worker into lp:lpbuildbot.
=== modified file 'master.cfg'
--- master.cfg	2021-03-12 13:50:10 +0000
+++ master.cfg	2021-03-17 19:28:59 +0000
@@ -25,6 +25,11 @@
 
 c['slavePortnum'] = 9989
 
+# Only allow one build on each buildslave at a time.
+
+from buildbot import locks
+build_lock = locks.SlaveLock('build', maxCount=1)
+
 ####### CHANGESOURCES
 
 # the 'change_source' setting tells the buildmaster how it should find out
@@ -171,53 +176,61 @@
         slavenames=[''],
         builddir='lp-devel-xenial',
         factory=launchpad_test_factory_factory(
-            '/var/lib/buildbot/slaves/xenial-lxd-worker', 'lptests-xenial')),
+            '/var/lib/buildbot/slaves/xenial-lxd-worker', 'lptests-xenial'),
+        locks=[build_lock.access('counting')]),
     BuilderConfig(
         name='lp-db-devel-xenial',
         slavenames=[''],
         builddir='lp-db-devel-xenial',
         factory=launchpad_test_factory_factory(
-            '/var/lib/buildbot/slaves/xenial-lxd-worker', 'lptests-xenial')),
+            '/var/lib/buildbot/slaves/xenial-lxd-worker', 'lptests-xenial'),
+        locks=[build_lock.access('counting')]),
     BuilderConfig(
         name='lp-devel-xenial-py3',
         slavenames=[''],
         builddir='lp-devel-xenial-py3',
         factory=launchpad_test_factory_factory(
             '/var/lib/buildbot/slaves/xenial-lxd-worker', 'lptests-xenial',
-            variables={'PYTHON': 'python3'})),
+            variables={'PYTHON': 'python3'}),
+        locks=[build_lock.access('counting')]),
     BuilderConfig(
         name='lp-db-devel-xenial-py3',
         slavenames=[''],
         builddir='lp-db-devel-xenial-py3',
         factory=launchpad_test_factory_factory(
             '/var/lib/buildbot/slaves/xenial-lxd-worker', 'lptests-xenial',
-            variables={'PYTHON': 'python3'})),
+            variables={'PYTHON': 'python3'}),
+        locks=[build_lock.access('counting')]),
     BuilderConfig(
         name='lp-devel-bionic',
         slavenames=[''],
         builddir='lp-devel-bionic',
         factory=launchpad_test_factory_factory(
-            '/var/lib/buildbot/slaves/bionic-lxd-worker', 'lptests-bionic')),
+            '/var/lib/buildbot/slaves/bionic-lxd-worker', 'lptests-bionic'),
+        locks=[build_lock.access('counting')]),
     BuilderConfig(
         name='lp-db-devel-bionic',
         slavenames=[''],
         builddir='lp-db-devel-bionic',
         factory=launchpad_test_factory_factory(
-            '/var/lib/buildbot/slaves/bionic-lxd-worker', 'lptests-bionic')),
+            '/var/lib/buildbot/slaves/bionic-lxd-worker', 'lptests-bionic'),
+        locks=[build_lock.access('counting')]),
     BuilderConfig(
         name='lp-devel-bionic-py3',
         slavenames=[''],
         builddir='lp-devel-bionic-py3',
         factory=launchpad_test_factory_factory(
             '/var/lib/buildbot/slaves/bionic-lxd-worker', 'lptests-bionic',
-            variables={'PYTHON': 'python3'})),
+            variables={'PYTHON': 'python3'}),
+        locks=[build_lock.access('counting')]),
     BuilderConfig(
         name='lp-db-devel-bionic-py3',
         slavenames=[''],
         builddir='lp-db-devel-bionic-py3',
         factory=launchpad_test_factory_factory(
             '/var/lib/buildbot/slaves/bionic-lxd-worker', 'lptests-bionic',
-            variables={'PYTHON': 'python3'})),
+            variables={'PYTHON': 'python3'}),
+        locks=[build_lock.access('counting')]),
     ]
 
 ####### STATUS TARGETS


Follow ups